March
14th,
2011
前言
最近 MVC 一直很火,我在做项目的时候也一直想用 MVC 做,但是考虑到传承问题(不是所有人都回去学 MVC 的),最后还是没有使用 MVC。
但是虽然不用 MVC,MVC 中很多好的思想还是可以借鉴的!
所以给大家介绍一些可以从 MVC 借鉴的东西。
Routing
Routing,MVC 中的路由功能,和 Url 重写类似,但是更高层一点~
Routing 的好处:
- 方便地进行 Url 重写
- 方便地获取页面的真实地址(防止网站挂在应用程序下后的地址错误)
在 WebForm 中使用 Routing 功能
1、引用 System.Web.Routing
2、在 Application_Start 中编写 Routing 规则
void Application_Start(object sender, EventArgs e)
{
//注册 Routing ,实现 Url 重写
Utility.RouteRegister.RegisterRoutes(RouteTable.Routes);
}
using System.Web.Routing;
namespace Utility
{
public static class RouteRegister
{
public static void RegisterRoutes(RouteCollection routes)
{
//根目录
routes.MapPageRoute(
"Root",
"",
"~/Views/Home_Index.aspx"
);
//后台管理
routes.MapPageRoute(
"Admin",
"Admin/{Controller}/{Action}/{Id}",
"~/Views/Admin/{Controller}_{Action}.aspx",
true,
new RouteValueDictionary(new { Controller = "Home", Action = "Index", Id = "" })
);
//默认页面
routes.MapPageRoute(
"Default",
"{Controller}/{Action}/{Id}",
"~/Views/{Controller}_{Action}.aspx",
true,
new RouteValueDictionary(new { Controller = "Home", Action = "Index", Id = "" })
);
}
}
}
好了,就是这么简单!~
从上面的 Routing 规则可以看到,我全部映射到了 Views 文件夹中 的 aspx 文件中
打开浏览器看看吧~
根据 Routing 设定生成 Url
MVC 中有了 Controller 和 Action 后生成链接非常方便,其实在 Asp.net 4.0 中也有这样的功能
<%: GetRouteUrl("Default", new {controller = "home" })%>
上述代码便可以生成指向 Home_Index 页面的链接
为什么没有直接传入 Controller 和 Action 的名字便可以得到 Url 的函数?
因为 Controller 和 Action 是 MVC 中的概念,而 Routing 并不是 MVC 的一个部分,是脱离的。
如果想像 MVC 里那样,那就需要自己写几个函数了~
本作品由 Dozer 创作,采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。