以下是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实现可能有问题。我需要这个有命名的路由和键入的路由-路由可以是管理和常规的。我使用这些信息动态构建基于路由定义的管理菜单。对于管理页面,我有指向资源字符串的名称,然后在管理页面标题中使用这些名称。这样我就有了可本地化的路由名称。我是不是太复杂了??