温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Asp.net中怎么实现一个MVC框架

发布时间:2021-07-15 14:47:09 来源:亿速云 阅读:161 作者:Leah 栏目:编程语言

Asp.net中怎么实现一个MVC框架,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1,用MVC的话就不用ASP.NET的服务器控件,我们新建一个视图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里面定义一个新的映射,如下,即所类似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 path2 = 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﹥

关于Asp.net中怎么实现一个MVC框架问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI