2017-02-13 37 views
0

У меня есть действие в контроллере:Как добавить параметры в mvcSiteMapNode?

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

, где DocType это простое перечисление. Я хочу иметь две разные ссылки на одно и то же действие, но с разными параметрами. Я попытался это:

<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> 

Но в меню у меня есть 2 ссылки без каких-либо параметров: «/ Платежи/Закрыть»

Что случилось? Как добавить параметры в 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

Если вы хотите использовать свой маршрут по умолчанию, вы должны использовать id для ключа маршрута (так как он поддерживает только ключи controller, action и id). Если вы этого не сделаете, вы получите маршрут с строкой запроса ?docType=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" id="2"></mvcSiteMapNode> 
    <mvcSiteMapNode title="Closing WS" controller="Payment" action="Close" id="4"></mvcSiteMapNode> 
</mvcSiteMapNode> 

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

В противном случае, вам нужно иметь маршрут с ключом {docType}. В любом случае, имена ключей должны совпадать, чтобы правильно создавать URL-адреса (как это необходимо в MVC при использовании ActionLink).

 Смежные вопросы

  • Нет связанных вопросов^_^