日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
自己動(dòng)手實(shí)現(xiàn)Asp.net的MVC框架

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

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出清水免費(fèi)做網(wǎng)站回饋大家。

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

知道了MVC的原理,我們現(xiàn)在就用.NET來實(shí)現(xiàn)MVC。

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

代碼如下:

﹤%@ Page Language="C#"%﹥
﹤!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"﹥
﹤html xmlns="http://www.w3.org/1999/xhtml" ﹥
﹤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里面定義一個(gè)新的映射,如下,即所類似XXX.do的請求都會(huì)被映射到Control.cs這個(gè)類上。這里我們可是以把所有的請求轉(zhuǎn)到Control類上作進(jìn)一步轉(zhuǎn)發(fā)。

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

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

void ProcessRequest(HttpContext context);// 啟用 HTTP Web 請求的處理??梢越邮盏巾撁娴恼埱髢?nèi)容,里面主要包括Request,Response,等,方便我們接收參數(shù)和頁面轉(zhuǎn)發(fā)。

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的名字。
//利用反射調(diào)用action,比如請求頁面現(xiàn)在
Type type = Type.GetType(actionName);
Object kk = Activator.CreateInstance(type);
type.GetMethod("Execue").Invoke(kk, new object[] { context });//Execue是Login.cs里面的一個(gè)方法,用于接收請求,處理數(shù)據(jù)。
}

現(xiàn)在我們要建一個(gè)處理具本業(yè)務(wù)的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)
{
//處理具體的業(yè)務(wù)羅輯和數(shù)據(jù)操作。并重定向到指定頁面
 //一般是處理出來的數(shù)據(jù)保存到模型里面,方便視圖調(diào)用數(shù)據(jù)顯示。
 contex.Response.Redirect("OK.aspx");
}
}

4,我們現(xiàn)在建一個(gè)數(shù)據(jù)模型Person,可以保存和返回?cái)?shù)據(jù)集,即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里面顯示處理后的數(shù)據(jù)顯示,可以用person里面的dt屬性返回?cái)?shù)據(jù)按asp顯示數(shù)據(jù)的方法顯示出

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

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

您正在閱讀的是:自己動(dòng)手實(shí)現(xiàn)Asp.net的MVC框架


網(wǎng)頁標(biāo)題:自己動(dòng)手實(shí)現(xiàn)Asp.net的MVC框架
當(dāng)前地址:http://www.dlmjj.cn/article/dpsghoh.html