|
|
[楼主] 不用ASP.NET MVC框架照样可以轻松实现MVC功能 Jexus web server既支持ASP.NET,也支持URL Rewrite,是一款跨平台的WEB服务器程序。利用Jexus强大的URL重写功能,无需ASP.NET MVC 框架就能轻松实现非常标准的MVC功能,而且更简捷、更自由。 示例如下: 假设: 地址“http://xxx.xx/m/”是访问首页 地址“http://xxx.xx/m/list”是访问商品列表页 地址“http://xxx.xx/m/list/car”是访问列表页中car这个子项目 物理路径:本例中所有文件放在网站根目录的mvc文件夹中。 具体实现过程如下: 一、配置网站 在site.conf配置文件的某个子站(设站名为abc)中添加: #首页的“路由” abc.rewrite=^/m/$ /mvc/index.aspx #MVC“标准”路径的路由(全部指向/mvc/controller.aspx) abc.rewrite=^/m/([\-/0-9a-zA-Z]{3,100}[^/]$) /mvc/controller.aspx?url=$1 #图片等静态文件的“路由” abc.rewrite=^/m/images/(.+?)$ /mvc/images/$1 abc.rewrite=^/m/(.+?)/images/(.+?)$ /mvc/images/$2 二、“控制器”设计 文件名为:controller.aspx(当然也可以是其它文件名,只要与URL Rewrite所定义的文件名相同就行),放到mvc文件夹中 文件内容如下: <%@ Import Namespace="System" %> <%@ Import Namespace="System.Web" %> <% //分解MVC RUL路径 string urlPath = Request.QueryString["url"]; if (String.IsNullOrEmpty(urlPath) || urlPath == "") { Response.Write("Url Error!"); Response.End(); } string[] workList = urlPath.Split(new char[] { '/' }); //根据URL路径的实际内容,执行对应的操作 if (workList.Length == 1) { switch (workList[0].ToLower()) { case "list": Server.Execute("list.aspx"); break; default: Server.Execute("index.aspx"); break; } } if (workList.Length == 2) { string work = workList[0].ToLower(); string qString = workList[1]; switch (work) { case "list": // 如:/list/car Server.Execute("list.aspx?id=" + qString); break; /*.......*/ default: //其它的 Server.Execute("index.aspx"); break; } } Response.End(); %> 三、针对“控制器”的中自定义的内容,建立“index.aspx”和“list.aspx”,全部放到mvc目录中。 index.aspx文件内容如下: <%@ Page Language="C#" %> <html> <head> <meta http-equiv="Content-Language" content="zh-cn" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>首页</title> </head> <body> <p>这是首页</p> <hr /> <p><a target="_blank" href="list">列表页</a></p> <p><a target="_blank" href="list/car">列表页加参数</a></p> </body> </html> list.aspx文件内容如下: <%@ Page Language="C#" %> <%@ Import Namespace="System.Web" %> <html> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>列表页</title> </head> <body> <p>这是列表页</p> <hr /> <p> <% string q = Request.QueryString["id"]; Response.Write("得到的参数是:" + q); %> </p> </body> </html> 重启jexus,访问一下,试试。 怎么样,的的确确是非常标准的MVC吧,而且,在设计上一点难度也没有,还有比它更简单更自由的MVC框架吗! 注:Jexus下载地址:linux.j66.net 或 www.j66.net [1楼] 回复:不用ASP.NET MVC框架照样可以轻松实现MVC功能 用Jexus实现MVC的最大优点如下: 1,对ASP.NET版本没有特殊要求,asp.net 1.1/2.0/3.0/3.5都可以用; 2,无需安装和学习asp.net mvc框架,不必改变asp.net编程习惯; 3,已经设计好的asp.net网站,仅需加一个“控制器”就基本上可以实现MVC格式的访问,除了对超链接等等内容作一些小的修改之外,根本不需要重新设计整个网站; 4,不用MVC名字空间和与之相关的程序集,MVC路由等功能在web服务器层面直接实现,因此,这种MVC实现方式较之其它实现方式的执行效率更高。 5,可以在网站设置中禁止用户访问真实的网站路径; 6,设计非常自由,布置非常灵活。 [2楼] 回复:不用ASP.NET MVC框架照样可以轻松实现MVC功能 这种实现方式既简单又灵活,无需组件支持,从web系统层实现,效率肯定比使用XX框架高得多,超爽,不知道在windows下能不能也这么做? [3楼] 回复:不用ASP.NET MVC框架照样可以轻松实现MVC功能 Jexus 2.x版是完全跨平台的,因此可以在windows下实现这个功能,而3.x版现在只有for linux的版本(主要为了更好地利用linux自身的优势),既然是for linux,就不能在windows下实现这个功能了。 |
|