我正在编写一个 MVC3 应用程序,它需要使用 http://[server]/[City]-[State]/[some term]/形式的 URL 重写。
据我了解,MVC3 包含一个路由引擎,它使用在 Global.asax 文件中定义的 {controler}/{action}/{id}:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
传统上(在非 MVC 应用程序中),我会使用一些 URL 重写风格来解码 url,例如 http://www.myserver.com/City-State/somesearch/查询看起来像这样的字符串参数: http://www.myserver.com/city=City&state=State&query=somesearch
请记住,此请求将来自 http://www.myserver.com/Home
这是否可以在无需指定 Controller 的情况下完成...像这样:
routes.MapRoute(
"Results",
"{city}-{state}/{searchTerm}",
new { controller = "Results", action = "Search" }
);
...还是最好列出 Controller ?
您如何在 MVC3 环境中处理此问题?
谢谢。
最佳答案
asp.net MVC3 中的 URL 重写:- 您可以在 Global.asax 文件中编写用于重写 url 的代码:-
//Default url
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"",
new { controller = "Home", action = "Index", id = "" }
);
//others url rewriting you want
RouteTable.Routes.MapRoute(null, "Search/{City_State}/{ID}", new { controller = "Home", action = "Search" });
关于c# - MVC3 和重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118840/