routes.MapRoute Confusion

时间:2016-08-30 12:12:25

标签: asp.net-mvc asp.net-mvc-5 routeconfig

我知道它的一般方法:

var expected = true;
var returnValue = "something";
var B = sinon.stub();
B.returns({type: returnValue});

//Act
var actual = A(returnValue); //use webm or local

//Assert
deepEqual(actual, expected);

但如果我这样做:

routes.MapRoute
    (
         name: "Default",
         url: "{controller}/{action}/{id}",
         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
     ); 

运行项目不会出错。我的 routes.MapRoute ( name: "Defaults", url: "Home/Index/1" ); 中有Controller = Home Action = Index(),但是当我在浏览器中输入HomeController时,为什么会出错?

  

错误:匹配的路线不包含'控制器'路线价值,   这是必需的。

路由中必须使用哪个部分? 另一个问题是:为什么我们需要http://localhost:1702/Home/Index/1?如果我给Route Name,它的工作正常,甚至存在多个路由,如name=""

2 个答案:

答案 0 :(得分:0)

你需要这个:

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

答案 1 :(得分:0)

url是为最终用户定义url结构。您甚至可以将其更改为

url: "{action}/{controller}/{id}"

所以要了解哪个是控制器,哪个是动作,你必须提供url结构。