成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自己動手實現Asp.net的MVC框架

開發 后端
本文介紹了自己編寫一個MVC的框架的方法。從JAVA STRUTS的實現和原理,逐步實現JAVA類,control類,mvc的c模型 (實現HTTP接口),control類跟據頁面FORM上的ACTION標記。

了解JAVA的人都了解struts框架,是一個典型的mvc框架,早些時候微軟也實現了.NET版的MVC,用到了路由技術,由于不開源,好多地方感到有些迷惑,于是有一個想法,為什么不自已寫一個MVC的框架呢。

說到MVC,先說一下JAVA STRUTS的實現和原理,所有的HTTP請求都會連到一個JAVA類,control類,mvc的c模型 (實現HTTP接口),control類跟據頁面FORM上的ACTION標記,當然這里的ACTION的值是一個操作類的名字,我們叫它ACTION 類,然后跟據反射用類的名字調用這個類,當然反射調用時也把http請求的內容傳進去。然后action類里面跟據請求里面的參數作一定的業務羅輯處理, 處理完之后,把數據內容放在類里面,重定向一個頁面。視圖顯示action里面的處理后的數據。

知道了MVC的原理,我們現在就用.NET來實現MVC。

1,用MVC的話就不用ASP.NET的服務器控件,我們新建一個視圖login.aspx,把﹤%%﹥里面的東西都去掉只留﹤%@ Page Language="C#"%﹥

代碼如下:

﹤%@ Page Language="C#"%﹥
﹤!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "﹤html xmlns="﹤head runat="server"﹥
﹤title﹥Login﹤/title﹥
﹤/head﹥
﹤body﹥
﹤form id="form1" action="Login.do" method="post"﹥
﹤input id="Text1" type="text" name="name" /﹥﹤br /﹥
﹤input id="Text2" type="text" name="pwd" /﹥
﹤input id="Submit1" type="submit" value="submit" /﹥
﹤/form﹥
﹤/body﹥
﹤/html﹥

2,在WEB.CONFIG里面定義一個新的映射,如下,即所類似XXX.do的請求都會被映射到Control.cs這個類上。這里我們可是以把所有的請求轉到Control類上作進一步轉發。

﹤system.web﹥
﹤httpHandlers﹥
﹤add verb="*" path="*.do" type="Control"/﹥
﹤/httpHandlers﹥

3,實現Control.cs這個類,新建一個Control類,讓他繼承 IHttpHandler接口,這個接口里面有兩一個屬性和一個方法,
bool IsReusable { get; }//如果 System.Web.IHttpHandler 實例可再次使用,則為 true;否則為 false。

void ProcessRequest(HttpContext context);// 啟用 HTTP Web 請求的處理。可以接收到頁面的請求內容,里面主要包括Request,Response,等,方便我們接收參數和頁面轉發。

Control.cs代碼如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Reflection;
/// ﹤summary﹥
/// HTTP 的摘要說明
/// ﹤/summary﹥
public class Control: IHttpHandler
{
public Control()
{
}
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext context)
{
HttpRequest req = context.Request;
string path= req.CurrentExecutionFilePath;
int index = path.LastIndexOf("/");
string path1 = path.Substring(index + 1);
string actionName = actiondo.Substring(0, actiondo.Length - 3);//這里就能得到頁面form信息里面的字符Login
//以上幾行代碼主要是得到action的名字。
//利用反射調用action,比如請求頁面現在
Type type = Type.GetType(actionName);
Object kk = Activator.CreateInstance(type);
type.GetMethod("Execue").Invoke(kk, new object[] { context });//Execue是Login.cs里面的一個方法,用于接收請求,處理數據。
}

現在我們要建一個處理具本業務的action類即Login.cs ,代碼如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
public class Login
{
public Login()
{
}
public void Execue(HttpContext contex)
{
//處理具體的業務羅輯和數據操作。并重定向到指定頁面
 //一般是處理出來的數據保存到模型里面,方便視圖調用數據顯示。
 contex.Response.Redirect("OK.aspx");
}
}

4,我們現在建一個數據模型Person,可以保存和返回數據集,即MVC里面的M,

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
namespace Person
{
/// ﹤summary﹥
/// Model 的摘要說明
/// ﹤/summary﹥
public class Person
{
public Person()
{
}
privatestring _id;
privatestring _name;
publicstring Id
{
get { return _id; }
set { _id = value; }
}
publicstring Name
{
get { return _name; }
set { _name = value; }
}
publicDataTabledt
{
 get { }
 set { }
}
}
}

5,OK.aspx里面顯示處理后的數據顯示,可以用person里面的dt屬性返回數據按asp顯示數據的方法顯示出

﹤table﹥
.........
﹤/table﹥

為了方便OK.aspx調用數據,在Login.cs里面聲明person模型時可以用靜態聲明的方式,以防在ok.aspx頁面上 new person()時找不到處理好的數據。

您正在閱讀的是:自己動手實現Asp.net的MVC框架

【編輯推薦】

  1. ASP.NET MVC應用程序的本地化、單元測試和AJAX應用
  2. 簡單理解ASP.NET MVC基本知識
  3. 淺析ASP.NET MVC中的TempData機制
  4. 技術高手講評ASP.NET MVC 1.0
  5. ASP.Net MVC框架配置與分析
責任編輯:yangsai 來源: 王老七的博客
相關推薦

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2010-06-23 15:44:03

ASP.NET MVC

2009-07-20 15:44:32

ASP.NET MVC

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2009-03-13 10:58:48

ASP.NetMVC框架編程

2009-07-28 14:47:18

ASP.NET MVC

2014-06-30 09:22:38

ASP.NETBootstrap

2011-09-07 09:43:04

ASP.NET服務框架

2009-09-10 09:50:47

ASP.NET MVC

2009-07-22 16:02:39

ASP.NET MVCPagedList

2009-07-31 12:43:59

ASP.NET MVC

2009-07-24 10:55:00

asp.net mvc

2009-07-20 15:51:40

FubuMVC核心框架ASP.NET MVC

2009-07-24 11:20:43

ASP.NET MVC

2010-03-23 08:42:26

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费看国产a | 亚洲av毛片| 国产清纯白嫩初高生在线播放视频 | 成人精品啪啪欧美成 | 高清黄色毛片 | 污片在线观看 | 日韩欧美成人精品 | 青青草综合 | 亚洲第1页 | 国产高清视频一区二区 | 久久视频免费看 | 亚洲成av人片在线观看 | 亚洲激情一区二区三区 | 日韩视频―中文字幕 | 三级视频在线观看电影 | 精品视频在线观看 | 日韩视频一区在线观看 | 精品欧美一区二区在线观看视频 | 精品无码三级在线观看视频 | www.久久.com | 91传媒在线观看 | 欧洲一区二区视频 | 91亚洲精品在线观看 | 观看av| 国产日韩精品视频 | 国产女人与拘做受视频 | 一区久久| 国产精品99久久久久久久久久久久 | 91中文字幕 | 欧美激情视频一区二区三区免费 | 视频一区在线观看 | 欧美国产精品久久久 | 久久国产精品一区二区三区 | 国产在线拍偷自揄拍视频 | 91在线精品秘密一区二区 | aaaaaaa片毛片免费观看 | 91视在线国内在线播放酒店 | 97精品国产97久久久久久免费 | 在线观看免费观看在线91 | 精品国产一区二区三区性色av | 国产在线观看一区二区三区 |