我的asp.net内容管理系统如何迁移到asp.net mvc(四)自定义URL路径

来源:互联网 发布:华为手机淘宝网 编辑:程序博客网 时间:2024/05/16 18:10

在网站的系统中,自定义url是非常重要的一部分,不仅对于seo有帮助,还能体现出架构设计的专业程度,比如:/article/2016/09/01这样的地址就比article.aspx?year=2016&month=09&date=01不仅要容易被搜索引擎收纳,而且也要友好得多。在实现自定义url的过程中,需要考虑三部分部分:1.截获404错误;2.页面转向;3.伪url及真url参数的设计

在asp.net MVC中,可以通过在global.asax中设置application_error来获取error (asp.net1.1时采用在iis设置curstom error page来实现),并针对404进行处理然后跳转 Server.TransferRequest (asp.net1.1时采用的是server.transfer);

而至于第三点关于伪url及真url参数的设计,结合Route路由机制,理想的伪url需求是:

1.不定数量的参数:目前Route路由中只有{*value}的方式勉强可以用,见 https://msdn.microsoft.com/zh-cn/library/cc668201(v=vs.90).aspx 处理可变数量段,图1;

2.随时设置伪url,无需修改项目代码:按照Route路由规则,需要在RouteConfig.cs中配置好并进行编译,或参考:动态配置ASP.NET MVC的Route规则

3.参数的有效性,多余的参数不被允许,不足的参数被忽略,比如:/controller/action/p1,/controller/action/p1/p2,目前的Route路由可以满足,图2;

4.参数的约束性,比如p1只能取值为a或者b,这样需要使用自定义路由的约束条件了,参考:自定义路由及约束  ,图3;

以上除了2外,Route机制是一个比较理想的方式;为了在应用阶段而不是代码阶段配置伪url,需要考虑采用数据库+缓存的方式来解决了。

参考MVC整体运行机制:http://www.360doc.com/content/13/0824/15/13029093_309571015.shtml




http://www.360doc.com/content/14/0317/21/16319058_361410393.shtml


http://stackoverflow.com/questions/16026441/dynamic-routes-from-database-for-asp-net-mvc-cms


0 0
原创粉丝点击