2017-04-23 3 views
1

나는 (내 홈 컨트롤러) 작업을 장식 : 위의 코드와MVC 속성 라우팅 문제

tbody = tbody + '<a href="@Url.Action("ViewBook", "Home")/' + item.Id + '/' + item.Slug + '">View Book</a>'; 

: 내보기에

[Route("view-book")] 
public ActionResult ViewBook(int? id1, string id2) 

, 나는 자바 스크립트를 사용하여 일부 하이퍼 링크를 채울 하이퍼 링크의 URL이 올바르게 렌더링됩니다. 예 :

https://localhost:44306/view-book/1/this-book 

그러나 ActionResult는 발생하지 않습니다. 그래서, 난 할 라우팅 장식을 변경

[Route("view-book/{id1:int?}/{id2}")] 
public ActionResult ViewBook(int? id1, string id2) 

그리고 이제 URL 잘못과 같이 렌더링 : 내가 수동으로 위 같은 올바른 URL로 URL을 변경하는 경우,

https://localhost:44306/Home/ViewBook/1/this-prop 

그러나 :

그러면 ActionResult가 작동합니다.

어떻게 해결할 수 있습니까?

답변

2

작업에 여러 경로를 사용할 수 있습니다. 당신은 자바 스크립트의 경로를 빌드 할 때

[HttpGet] 
[Route("view-book")] // Matches GET view-book 
[Route("view-book/{id1:int?}/{id2}")] //Matches GET view-book/1/slug 
public ActionResult ViewBook(int? id1, string id2) { ... } 

그런 식으로, 첫 번째 경로는 이제 @Url.Action("ViewBook", "Home")view-book에 해결해야 전에 때문에 원하는대로 올바른 URL을 렌더링 할 수 있도록해야하고, 두 번째 경로는 작업이 될 수 있습니다 호출됩니다.