加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 未找到或构造错误的路由

发布时间:2020-12-16 09:34:06 所属栏目:asp.Net 来源:网络整理
导读:以下是来自global.asax.cs的路由定义: routes.Add( new NamedTypedRoute( "feedback-en",RouteType.Regular,"{culture}/Feedback",new RouteValueDictionary( new { culture = "en",controller = "Feedback",action = "Index" } ),null,new MultiLingualMvc
以下是来自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","{culture}/Kontakt",new RouteValueDictionary(
      new
      {
        culture = "sl",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实现可能有问题.我需要这个有命名的路由和键??入的路由 – 路由可以是管理员和常规路由.我使用此信息根据路由定义动态构建管理菜单.对于管理页面,我有指向资源字符串的名称,然后我在管理页面标题中使用这些名称.这样我就有了可本地化的路由名称.我是不是太复杂了?

解决方法

Html.ActionLink扩展程序呈现链接到操作的锚元素.另一方面,Html.RouteLink扩展呈现了一个可以解析为操作方法,文件,文件夹或其他资源的锚元素. RouteLink实际上并不像ActionLink那样采用ActionName和ControllerName字符串.从更多细节看一下参数的参数名称.这里的描述在MSDN / IntelliSense中写得不是很好.

可悲的是,我对第二个问题没有答案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读