首页新闻找找看学习计划

.NET MVC 中路由定义好了匹配规则,但是接受不到参数的问题。

0
悬赏园豆:5 [已解决问题] 解决于 2017-03-02 13:43

下面是定义的路由匹配规则:

routes.MapRoute(
                    name: "UnsolvedTagspecial",
                    template: "user/undo/{t}",
                    defaults: new { Controller = "user", action = "undo" }
                    );

routes.MapRoute(
                    name: "UnsolvedTag",
                    template: "user/{t}/undo",
                    defaults: new { Controller = "user", action = "undo" }
                    );

下面是Controller 中的方法

public async Task<ActionResult> undo(string t)
{
    //   .....
}

我在地址栏上输入 :http://localhost:111/user/undo/111 设置断点在方法中,查看到 t 为null
然而我输入:http://localhost:111/user/111/undo 在方法中成功接收到参数 t = 111
这是为什么呀?


BUTTERAPPLE的主页 BUTTERAPPLE | 老鸟四级 | 园豆:2918
提问于:2017-03-02 11:50
< >
分享
最佳答案
0

找到问题原因了,原因是我把默认的路由定义规则放在了开头,好尴尬。

routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "list", action = "unsolved", id = UrlParameter.Optional } // Parameter defaults
            );

只要把这段默认的路由规则放在最后就成功解决了上面的问题。


BUTTERAPPLE | 老鸟四级 |园豆:2918 | 2017-03-02 13:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册