如何解决MVC3并重写
| 我正在编写一个MVC3应用程序,该应用程序将需要使用http:// [server] / [City]-[State] / [some term] /形式的URL重写。 据我了解,MVC3包含使用{controler} / {action} / {id}的路由引擎,该引擎在Global.asax文件中定义: 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
无需指定控制器即可完成此操作...
routes.MapRoute(
\"Results\",\"{city}-{state}/{searchTerm}\",new { controller = \"Results\",action = \"Search\" }
);
...或者列出控制器真的是最好的选择吗?
在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}\",action = \"Search\" });
,查看以下两个答案:
ASP.NET MVC路由:如何定义自定义路由
在ASP.Net MVC中定义自定义URL路由
摘要:
在默认路由之前指定自定义路由。
在通用之前先定义特定的路由,因为它们可能会匹配。
默认值是可选的。
在默认参数对象中指定默认的Controller和Action。
,您可以通过在Global.asax
文件中注册路由来做到这一点,但是要注册该路由很重要,您必须先注册旧路由,然后再注册新路由。
routes.IgnoreRoute(\"{resource}.axd/{*pathInfo}\");
// for Old url
routes.MapRoute(
\"Results\",\"{city}-{state}/{searchTerm}\",new { controller = \"Results\",action = \"Search\" }
);
// For Default Url
routes.MapRoute(
\"Default\",// Route name
\"{controller}/{action}/{id}\",// URL with parameters
new { controller = \"Home\",id = UrlParameter.Optional } // Parameter defaults
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。