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

asp.net-mvc – 具有不同参数名称的Asp.Net路由

发布时间:2020-12-16 09:22:46 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试映射某些路由,以便自动生成的Urls看起来像 这两个代码块的Admin / controller / action / param, @ Url.Action(“action”,“controller”,new {id =“param”})和 @ Url.Action( “行动”,“控制器”,新的{类型= “参数”}) 我所做的是在区域注册
我正在尝试映射某些路由,以便自动生成的Urls看起来像
这两个代码块的Admin / controller / action / param,
@ Url.Action(“action”,“controller”,new {id =“param”})和
@ Url.Action( “行动”,“控制器”,新的{类型= “参数”})

我所做的是在区域注册中的以下内容,

context.MapRoute(
            "Admin_default","Admin/{controller}/{action}/{id}",new { action = "Index",id = UrlParameter.Optional },new string[] { "namespaces" });

        context.MapRoute(
            "Admin_type","Admin/{controller}/{action}/{type}",type = UrlParameter.Optional },new string[] { "namespaces" });

当参数名称为id时,生成的url是预期的,但是当参数名称是type,而不是controller / action / typevalue时,它会生成类似controller / action /?type = typevalue的内容

有没有办法生成像控制器/动作/类型值的url保持Admin_default路由的生成器行为完整?

解决方法

when parameter name is id,url generated is as expected,but when
parameter name is type,instead of controller/action/typevalue,it
generates something like controller/action/?type=typevalue

发生这种情况是因为第一条路线用于映射网址(ID是可选的).

您可以尝试为路线添加一些约束.我猜你的id参数是一个整数,type参数是一个字符串.在这种情况下,您可以尝试使用此路线:

context.MapRoute(
                "Admin_default",new { id = @"d+" },new string[] { "namespaces" });

context.MapRoute(
                "Admin_type",new string[] { "namespaces" });

您可以找到有关路线约束here的更多信息.

(编辑:李大同)

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

    推荐文章
      热点阅读