【发布时间】:2011-09-01 09:48:12
【问题描述】:
我正在编写一个 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 重写风格来将诸如 http://www.myserver.com/City-State/somesearch/ 之类的 URL 解码为如下所示的查询字符串参数: http://www.myserver.com/city=City&state=State&query=somesearch
请记住,此请求将来自http://www.myserver.com/Home
这可以在不指定控制器的情况下完成吗...像这样:
routes.MapRoute(
"Results",
"{city}-{state}/{searchTerm}",
new { controller = "Results", action = "Search" }
);
... 还是最好列出控制器?
你如何在 MVC3 环境中处理这个问题?
谢谢。
【问题讨论】:
-
指向您的 MVC 应用程序的 URL 是否已经存在(来自其他应用程序的链接、PPC 等)?或者您是在问如何捕获参数?
-
我问的是正确捕获参数,这些参数是上面列出的形式。
标签: c# asp.net asp.net-mvc-3 url-rewriting url-routing