Asp.net mvc 在MVC中,大括号在路线中是什么意思?
我正在用一个MVC项目设置我的路线,但是我对花括号有点困惑 如果我有Asp.net mvc 在MVC中,大括号在路线中是什么意思?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,我正在用一个MVC项目设置我的路线,但是我对花括号有点困惑 如果我有 routes.MapRoute( "Music", "Music/{name}", new { } ); 名字周围用大括号括起来的目的是什么,这会传递给什么东西吗?或者,如果我传入一个默认对象,这是否映射到某个对象?它们是路由请求中使用的参数名。例如,默认管线定义了其中三个: {controller}/{action}/{id} 控制器和动作参数用于查找控制器动作id参数可以用作这些操作中的输入 定义自定义路线时,必须提
routes.MapRoute( "Music", "Music/{name}", new { } );
名字周围用大括号括起来的目的是什么,这会传递给什么东西吗?或者,如果我传入一个默认对象,这是否映射到某个对象?它们是路由请求中使用的参数名。例如,默认管线定义了其中三个:
{controller}/{action}/{id}
控制器
和动作
参数用于查找控制器动作<代码>id参数可以用作这些操作中的输入
定义自定义路线时,必须提供控制器
和操作
参数。如果URL中没有定义它们,您应该提供默认值,以便MVC知道当请求与该路由匹配时要运行什么操作
routes.MapRoute("Music",
"Music/{name}",
new { controller="Music", action="SomeAction" });
您定义的其他参数,如id
或name
,可用于为操作提供输入。在您的示例中,name
参数被传递给匹配操作,如下所示:
public ActionResult SomeAction(string name)
{
//do something
}
我将尝试提供一个不那么做作的例子 ASP.NET MVC中的路由放在字典中,当有传入请求时,MVC管道会查看该请求并尝试确定将其路由到哪个控制器和操作 假设我有以下控制器:
主页
,论坛
,以及文章
当我们进行此操作时,假设我有以下操作:查看
,编辑
,在论坛
和文章
控制器上创建
这些大括号允许我为以下两种情况创建一条管线:
routes.MapRoute("Viewing",
{controller}/{action}/{id},
new {controller = "Article", action="" }, //The article controller has precedence
new { controller = "Article|Forum" } //contrived for this example
);
这些大括号意味着,无论他们放在哪个控制器中(只要它是基于约束的文章
或论坛
),相同的路径都有效。这使我不必为论坛和文章控制器中的每一个动作都设置路线
我可以很容易地走两条路线:
routes.MapRoute("Articles",
article/{action}/{id},
new {controller = "Article" } //The article controller has precedence
);
routes.MapRoute("Forums",
forum/{action}/{id},
new { controller = "forum" }
);
但这里有一些不需要的重复
路线也是相当棘手的事情,因为顺序很重要。顶部管线将在底部管线之前进行评估。如果它与top route的结构匹配,它将转到该操作,即使该操作不正确
Phil Haack有一个路由调试器可以帮助实现这一点。我还获取了他的源代码并对其进行了修改,这样您就可以(希望您也能在其中添加只允许内部人员查看的代码)。卷发表示一种命名的通配符
“音乐/索引”
路由将只与URL音乐/索引
匹配,其他内容不匹配
“Music/{Name}”
路由将匹配任何以Music开头并在斜杠后面有任何内容的URL。它将同时匹配URLMusic/metallica
和Music/madonna
使用大括号,您可以从上述URL中选择“metallica”或“madonna”作为RouteValue
最后一个例子是:对于ASP.NET MVC,总是有一个标准路由<代码>{controller}/{action}/{id}。此路由将捕获诸如音乐/流派/摇滚
或产品/编辑/5
之类的URL。
这两个的结果RouteValue为:
- 控制器=音乐,动作=体裁,id=摇滚
- 控制器=产品,操作=编辑,最后一个id=5