以下是我在 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()
)
);
如果我在 View 中这样做
<%: Html.ActionLink("sl", "feedback-sl")%> | <%: Html.ActionLink("en", "feedback-en")%>
构造的 URL 指向根站点(构造的链接中不包含 Controller /操作信息)。
如果我在 View 中这样做
<%: 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"
我的两个问题:
最佳答案
Html.ActionLink 扩展呈现链接到 Action 的 anchor 元素。另一方面,Html.RouteLink 扩展呈现一个 anchor 元素,它可以解析为一个 Action 方法、一个文件、一个文件夹或一些其他资源。 RouteLink 并不像 ActionLink 那样真正采用 ActionName 和 ControllerName 字符串。从更多细节看一下参数的参数名称。这里的描述并不是用 MSDN/IntelliSense 写得很好。
遗憾的是,我对第二个问题没有答案。
关于asp.net-mvc - 未找到或错误构建的路线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4183950/