2 yfzhou888 yfzhou888 于 2016.04.19 19:20 提问

ASP.NET MVC 路由值中包含句点(.)

1、有如下的路由配置:
routes.MapRoute(
name: null,
url: "{category}",
defaults: new
{
controller = "Home",
action = "List",
category = UrlParameter.Optional
});

    输入URL为"/asp",匹配成功,而输入"/asp.net",匹配失败。

2、修改路由匹配如下:
routes.MapRoute(
name: null,
url: "{category}/page{page}",
defaults: new
{
    controller = "Home",
    action = "List",
    category = UrlParameter.Optional
});

    输入URL为"asp.net/page1",却能匹配成功。


    请问url:{category}为什么匹配不到asp.net,而url:{category/page{page}}却能匹配到asp.net,什么原因???

4个回答

caozhy
caozhy   Ds   Rxr 2016.04.19 19:48

因为你有一个默认路由写在前面匹配走了,结果你的路由被忽略,把你的路由写在最前面

yfzhou888
yfzhou888   2016.04.19 20:16

这个路由是写在默认路由的前面!
估计是ASP.NET中的"."在作祟!

yfzhou888
yfzhou888   2016.04.19 20:21

我想对产品进行分类,并希望用户通过如下URL进行分类导航:
/数据库
/程序设计
/JAVA
上述的路由值没有句点(.),则能实现正常的分类导航,但如果:
/ASP.NET
则报错,匹配不成功。

CSDNXIAON
CSDNXIAON   2016.04.19 21:01

ASP.NET MVC路由配置
ASP.NET MVC路由配置
Asp.Net MVC 路由
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!