欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【基于ASP.NET2.0的非HttpModule山寨版MVC框架的实现】,下面是详细的分享!
基于ASP.NET2.0的非HttpModule山寨版MVC框架的实现
以下为引用的内容:
Controller类
using System.Web;
using System.Web.Services;
namespace DotNetMVC.MVC {
/// <summary>
/// 控制器
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public abstract class Controller<T, K> : IHttpHandler {
/// <summary>
/// 当前请求
/// </summary>
protected MyRequest Request;
/// <summary>
/// 输出
/// </summary>
protected HttpResponse Response;
/// <summary>
/// 返回到View页面的数据
/// </summary>
protected MvcViewData<T, K> ViewData;
/// <summary>
/// 控制器名称
/// </summary>
private string controllerName;
/// <summary>
/// 控制器操作方法
/// </summary>
public abstract void Action();
/// <summary>
/// 执行请求
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context) {
Request = context.Request;
Response = context.Response;
//这里可以用反射的方式进行带参数的操作,这里为了简化,去掉了这部分
//MethodInfo method = this.GetType().GetMethod("Action", new Type[0]);
//if (method == null) {
// throw new NotImplementedException("没有实现!");
//}
//object data = method.Invoke(this, null) as object;
ViewData = new MvcViewData<T, K>();
Action();
context.Items.Add("MvcViewData", ViewData);
context.Server.Transfer("~/View/" + ControllerName + ".aspx", false);
}
/// <summary>
/// 控制名称,不设置默认为View页面与控制器名称同名
/// 比如,在Login.ashx请求中,默认调用View/Login.aspx的页面作为显示页面。
/// 当登录成功后,设置其为LoginOK,则会调用View/LoginOK.aspx
/// </summary>
protected string ControllerName {
get {
if (string.IsNullOrEmpty(controllerName))
return this.GetType().Name;
return controllerName;
}
set {
controllerName = value;
}
}
public bool IsReusable {
get {
return false;
}
}
}
}
以上所分享的是关于基于ASP.NET2.0的非HttpModule山寨版MVC框架的实现,下面是编辑为你推荐的有价值的用户互动:
相关问题:什么MVC框架实现原理?
答:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需... >>详细
相关问题:求一个基于asp.net的 MVC框架的系统,不要太复杂,...
答:安装VS 2010以后的版本,新建MVC项目,照猫画虎就可以了。 >>详细
相关问题:asp.net,我使用MVC4框架搭建了一个项目,我想实现...
答:这个要根据你多语言是怎么做的才能确定用什么方式吧。 如果你是用语言包的方式来做的,那所有东西用 Html.Display 来显示。 如果你是用Area 来做的。那就改写路由呗。 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
