routes.MapRoute( "Default", // Route name "Home/{action}", new { controller = "Home" } // Parameter defaults【1】 );
上述路由 我访问http://localhost:1949/Home/index 能成功 ,但是把【1】这个默认的参数去掉或换成别的值(比如controller = "Hoffme")为什么就访问不成功了呢?
把参数去掉是提示
而换成别的值提示找不到页面
你有Hoffme这个controller吗?
如果路由是这样:
routes.MapRoute(
"Default", // Route name
"Home/{action}",
new { controller = "Hoffme" } // Parameter defaults【1】
);
访问http://localhost:1949/Home/*链接,就一定是Hoffme Controller的.
没有 但是我访问的是http://localhost:1949/Home/index啊
不是用默认controller
@koi:
你有Hoffme这个controller吗?
如果路由是这样:
routes.MapRoute(
"Default", // Route name
"Home/{action}",
new { controller = "Hoffme" } // Parameter defaults【1】
);
访问http://localhost:1949/Home/*链接,就一定是Hoffme Controller的.
@zhangweiwen: 不是没有输入地址的时候比如http://localhost:1949/ 这样才调用默认的配置吗? 我现在有http://localhost:1949/Home/index 不是直接匹配我的url路由 "Home/{action}"的吗?
@koi: 没有什么默认路由的说法,Default也是没有用的,只是个名字,还有放在最前面而已,路由匹配是根据第二个参数开始的,你固定了第一个反斜杠是Home.所以所有http://localhost:1949/Home/*都匹配这个链接,而在这里路由系统还没有找到用那个Controller(因为不是绑定{}),所以用了第三个参数的"Hoffme"作为controller,所以结论是,下面的路由配置:
routes.MapRoute(
"Default", // Route name
"Home/{action}",
new { controller = "Hoffme" } // Parameter defaults【1】
);
访问http://localhost:1949/Home/*链接,就一定是Hoffme Controller的.
你要想不出错可以把Home/{action}换为{controller}/{action}试试
谢谢 不过我只是不明白为什么直接指定Home不可以 跟看到的资料说的不一样
因为通过路由和url中找不到controller和Action是什么了
我的路由不是"Home/{action}"吗? 匹配url localhost:1949/Home/Index 这样不是可以匹配?
@koi: 但是你没给controller的匹配方式