繁体   English   中英

了解ASP.NET MVC中的路由

[英]Understanding routing in ASP.NET MVC

我试图围绕ASP.NET MVC实现路由的方式。

根据我目前的理解,似乎我的路线字符串很多都有“{controller}”和“{action}”,否则它不起作用?

如何定义使用SearchControllerSearch操作的路径,同时使用SearchKeywordsSearchCaseSensitive参数具有以下URL?

domain/SearchKeywords/CaseSensitive

更简单的是,如何将domain映射到控制器SearchControllerSearch

您可以将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM