Я хочу, чтобы иметь возможность сопоставлять маршрут, используя URL-адрес, который не соответствует {controller}/{action}/{id} формат. Отображение выглядит следующим образом:URL-адреса ASP.NET MVC, отличающиеся от {controller}/{action} с областями
routes.CreateArea("Root", "MyApp.Web.Controllers",
routes.MapRoute("Category-List", "Category/{category}",
new { controller = "Category", action = "List" }),
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" })
);
Где у меня есть CategoryController
с действием List(string category)
.
Я надеялся, чтобы иметь возможность использовать это на мой взгляд:
<%= Html.ActionLink<CategoryController>(
c => c.List(category.UrlFriendlyName),
category.Name)%>
(разрывы строк добавлены для читаемости)
Все это производит на связь с href=""
. Извлечение маршрута из области «Корень» дает правильный результат. Можно ли использовать этот тип сопоставления с общим помощником ActionLink или мне нужно использовать RouteLink или что-то подобное с жестко закодированными значениями?
Я также попытался следующие без успеха:
<%= Html.ActionLink(category.Name, "List", "Category",
new { category = category.UrlFriendlyName }) %>
не был совершенно уверен, что это должно выглядеть, но это не работает: <% = Html.ActionLink (category.Name, "Список", "Категория", новый {категория = category.UrlFriendlyName})%> – roryf
Это выглядит правильно, но они не использовали их какое-то время! Вы пытались установить значение по умолчанию для категории? –