Asp.net mvc 未找到路由或路由构造不正确

Asp.net mvc 未找到路由或路由构造不正确,asp.net-mvc,model-view-controller,asp.net-mvc-2,localization,routing,Asp.net Mvc,Model View Controller,Asp.net Mvc 2,Localization,Routing,以下是我在global.asax.cs中的路线定义: routes.Add( new NamedTypedRoute( "feedback-en", RouteType.Regular, "{culture}/Feedback", new RouteValueDictionary( new { culture = "en", controller = "Feedback", action = "Index

以下是我在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")%>
我的两个问题:

  • 为什么有两个非常相似的助手,RouteLink和ActionLink?他们之间有什么区别
  • 我想我的命名TypeDroote实现可能有问题。我需要这个有命名的路线和类型的路线-路线可以是管理和常规。我使用这些信息根据路由定义动态构造管理菜单。对于管理页面,我有指向资源字符串的名称,然后在管理页面标题中使用这些名称。这样我就有了可本地化的路由名称。我是不是把这个复杂化了

  • ActionLink扩展呈现链接到动作的锚元素。另一方面,Html.RouteLink扩展呈现一个锚元素,该锚元素可以解析为操作方法、文件、文件夹或其他资源。RouteLink并不像ActionLink那样采用ActionName和ControllerName字符串。从更详细的信息中,查看参数的参数名称。这里的描述不是很好地用MSDN/IntelliSense编写的


    遗憾的是,对于第二个问题我没有答案。

    您能否与我们分享
    namedTypeDroote
    multi-languageMVCrouteHandler
    的实现?其中一个可能有问题。
    <%: 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"