2017-02-13 2 views
0

나는 컨트롤러에서 작업이 있습니다mvcSiteMapNode에 매개 변수를 추가하는 방법은 무엇입니까?

에서 DocType 간단한 열거입니다
public ActionResult Close(DocType docType) 
    { 
     return View(); 
    } 

. 동일한 작업이지만 다른 매개 변수로 2 개의 다른 링크가 필요합니다. 나는이 시도 :

<mvcSiteMapNode title="Accounting" clickable="false" imageUrl="~/Content/Images/Buttons/MenuButtons/billing.png" visibility="path"> 
     <mvcSiteMapNode title="Payments" controller="Payment" action="Index"></mvcSiteMapNode> 
     <mvcSiteMapNode title="Closing WO" controller="Payment" action="Close" docType="2"></mvcSiteMapNode> 
     <mvcSiteMapNode title="Closing WS" controller="Payment" action="Close" docType="4"></mvcSiteMapNode> 
    </mvcSiteMapNode> 

을하지만 메뉴에 나는 어떤 매개 변수없이이 개 링크가 : "/ 결제/닫기"

이 문제점은 무엇입니까

? mvcSiteMapNode에 매개 변수를 추가하는 방법은 무엇입니까? 여기

내 RouteConfig 있습니다

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
+0

이것은 라우팅 문제와 같습니다. 라우팅 구성을 표시하십시오. '{docType}'매개 변수가있는 경로가 있습니까? – NightOwl888

+0

아니요, 그런 경로가 없습니다. 선택적 id 매개 변수로 기본 라우트 만 사용하고 싶습니다. –

답변

0

당신이 당신의 기본 경로를 사용하려는 경우, 당신은 (그것은 단지 키 controller, actionid을 지원하기 때문에) 루트 키를 id를 사용해야합니다. 그렇지 않으면 경로의 일부가 아닌 추가 정의되지 않은 정보이기 때문에 쿼리 문자열 ?docType=2이있는 경로를 얻게됩니다.


public ActionResult Close(DocType id) 
{ 
    return View(); 
} 

<mvcSiteMapNode title="Accounting" clickable="false" imageUrl="~/Content/Images/Buttons/MenuButtons/billing.png" visibility="path"> 
    <mvcSiteMapNode title="Payments" controller="Payment" action="Index"></mvcSiteMapNode> 
    <mvcSiteMapNode title="Closing WO" controller="Payment" action="Close" id="2"></mvcSiteMapNode> 
    <mvcSiteMapNode title="Closing WS" controller="Payment" action="Close" id="4"></mvcSiteMapNode> 
</mvcSiteMapNode> 

그렇지 않으면, 당신은 키 {docType}와 경로가 있어야합니다. 어쨌든 URL을 올바르게 생성하려면 키 이름이 일치해야합니다 ( ActionLink을 사용할 때 MVC에 있어야 함).

관련 문제