Ниже приведено определение моих маршрутов из global.asax.cs:
routes.Add(
new NamedTypedRoute(
"feedback-en", RouteType.Regular, "{culture}/Feedback",
new RouteValueDictionary(
new
{
culture = "en",
controller = "Feedback",
action = "Index"
}
),
null,
new MultiLingualMvcRouteHandler()
)
);
routes.Add(
new NamedTypedRoute(
"feedback-sl", RouteType.Regular, "{culture}/Kontakt",
new RouteValueDictionary(
new
{
culture = "sl",
controller = "Feedback",
action = "Index"
}
),
null,
new MultiLingualMvcRouteHandler()
)
);
Если я сделаю это в представлении
<%: Html.ActionLink("sl", "feedback-sl")%> | <%: Html.ActionLink("en", "feedback-en")%>
составной URL указывает на корневой сайт (информация о контроллере / действии не включена в составную ссылку).
Если я сделаю это в представлении
<%: Html.RouteLink("sl", "feedback-sl")%> | <%: Html.RouteLink("en", "feedback-en")%>
исключение:
"A route named 'feedback-sl' could not be found in the route collection.
Parameter name: name"
Мои два вопроса:
- Почему есть два очень похожих помощника, RouteLink и ActionLink? В чем разница между ними?
- Полагаю, что-то не так с моей реализацией NamedTypedRoute. Мне нужно, чтобы в нем были названы маршруты и напечатаны маршруты - маршрут может быть административным и обычным. Я использую эту информацию для динамического построения меню администрирования на основе определения маршрутов. Для страниц администрирования у меня есть имена, указывающие на строки ресурсов, а затем я использую их в заголовках страниц администрирования. Таким образом, у меня есть локализуемые названия маршрутов. Я слишком усложняю это?