[英]Understanding routing in ASP.NET MVC
我试图围绕ASP.NET MVC实现路由的方式。
根据我目前的理解,似乎我的路线字符串很多都有“{controller}”和“{action}”,否则它不起作用?
如何定义使用SearchController
和Search
操作的路径,同时使用SearchKeywords
和SearchCaseSensitive
参数具有以下URL?
domain/SearchKeywords/CaseSensitive
更简单的是,如何将domain
映射到控制器SearchController
和Search
?
您可以将controller = "Search", action = "Search"
到defaults
(最后一个参数)。
路由引擎将使用defaults
值中的defaults
来填充不在URL中的参数。
根据我目前的理解,似乎我的路线字符串很多都有“{controller}”和“{action}”,否则它不起作用?
需要控制器和操作令牌的值。 您有2个提供值的选项:
1)在URL模板上使用{controller}和{action}标记。 例如:
routes.MapRoute(null, "{controller}/{action}");
2)使用控制器和操作的默认值。 例如:
routes.MapRoute(null, "some-url",
new { controller = "Search", action = "Search" }
);
如何定义使用SearchController和Search操作的路径,同时使用SearchKeywords和SearchCaseSensitive参数具有以下URL?
域/ SearchKeywords /区分大小写
路由系统不考虑URL主机(或域),仅考虑应用程序相对路径。 你可以这样做:
routes.MapRoute(null, "{SearchKeywords}/{CaseSensitive}",
new { controller = "Search", action = "Search" }
);
如果要使其中任何一个可选,您还可以为SearchKeywords和CaseSensitive提供默认值。
如果您想在路线中使用“域”参数,则必须将其放在路线注册的顶部。 第二个匿名对象中的“domain”参数是一个约束,此处设置为一个正则表达式,用于测试该域是否为可能的域“DefaultDomain”或“OtherDomain”。
routes.MapRoute("DomainRoute", "{domain}/{controller}/{action}",
new {domain = "DefaultDomain", controller = "Search", action = "Search"},
new {domain = "DefaultDomain|OtherDomain"});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.