2

나는 Url.Action 다음과 같은 GET 작업에 대한 링크를 만들려고 해요 :Url.Action에서이 값을 가져 오는 위치는 어디입니까?

public class FooController : Controller 
{ 
    [HttpGet] 
    [Route("Foo/Apply/BarDetails/Part/{id}")] 
    public IActionResult BarDetails(int id) 
    { 
    } 
} 

을 그리고 내보기에 나는

Url.Action("BarDetails", "Foo", new {id = 1}) 

와 URL을 만드는거야 그러나 이것은 URL Foo/Apply/BarDetails/Part/10?id=1을 생성하는 확실히 내가 원하는 것이 아닙니다! values 매개 변수를 제거하면 URL의 쿼리 문자열 부분 만 제거됩니다. 내가 시작시 등록 된 유일한 경로는 내가 ASP.NET 코어 소스를 살펴 했어

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}/{id?}"); 
}); 

내가 URL의 "10"부분은으로 어딘가에 "1" + "0" 작업에서 오는 것으로 의심 라우팅 코드가 2 개 이상으로 나뉘어지며 따라 가기가 어렵습니다. 누구든지이 URL의 마지막 부분이 생성되는 방법과 경로 값에 제공된 id과 일치하도록 수정하는 방법을 알고 있습니까?

+0

음, 아마도 [경로 (/ 라이센스/적용/세부 정보/부품/{id} ")]'? – juunas

+0

네, 값으로'1'을 지정했을 때 경로의'id' 부분에서'10'은 어디에서 왔습니까? – Mourndark

답변

1

아래의 코드를 따르십시오. 기본적으로 가능한 경로 목록은 URL에 따라 정렬되므로 Foo/Apply/BarDetails/Part/10이 목록의 맨 위로 정렬되고 요청 된 URL과 일치하므로 반환됩니다. 자세한 내용은 this GitHub issue을 참조하십시오.

-1

속성 기반 라우팅에서 선택적 route 매개 변수의 최대 및 최소 범위를 설정할 수 있습니다. 그것은 라우팅 (이 컨트롤러가 작성되었습니다) MVC5 및 ASP.NET 코어 2. 그것은 또한 내가 내 컨트롤러를 구조 한 방법에 관련이 사이에 변경된 것을 밝혀

enter code here [Route("Licence/Apply/Details/Part/{id:int:max(1000):min(10)}}")] 
+1

이것은 질문과 관련이 있습니다! –