知识大全 .NET MVC框架
Posted 知
篇首语:好高骛远的一无所得,埋头苦干的获得知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET MVC框架相关的知识,希望对你有一定的参考价值。
.NET Web开发震撼之变:.NET MVC框架 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
MVC概念
MVC是一种架构设计模式 该模式主要应用于图形化用户界面(GUI)应用程序 那么什么是MVC?MVC由三部分组成 Model(模型) View(视图)及Controller(控制器)
Model即应用程序的数据模型 任何应用程序都离不开数据 数据可以存储在数据库中 磁盘文件中 甚至内存中 Model就是对这些数据的抽象 不论数据采取何种存储形式 应用程序总是能够通过Model来对数据进行操作 而不必关心数据的存储形式 数据实体类就是常用的一种Model 例如 一个客户管理应用程序使用数据库来存储客户数据 数据库表中有一个客户表Customer 相应的程序中一般会建立一个数据实体类Customer来与之对应 这个实体类即使客户表的Model
View是应用程序的界面 用户通过View来操作应用程序 完成与程序的交互 View提供了可视化的界面来显示Model中定义的数据 用户通过View来操作数据 并将对Model数据操作的结果返回给用户 在桌面应用程序中 View可能是一个或多个Windows窗体 在Web应用程序中 View是由一系列网页构成 在ASP NET网站中即为 aspx页面
Controller 定义了程序的应用逻辑 用户通过View发送操作命令给Controller 由Controller按照程序设计的逻辑来更新Model定义的数据 并将操作结果通过View返回给用户
MVC的历史
MVC这一概念最早由美国教授Trygve Reenskaug于 年提出 年MVC这一设计模式正式在《A Cookbook for Using the Model View Controller User Interface Paradigm in Smalltalk 》一书中提出 伴随着微软Windows操作系统的迅速发展与普及 图形化用户界面应用程序逐渐成为主流 很多编程语言都出现了MVC框架 以方便开发人员使用该模式来设计应用程序 这些框架中大部分都是针对Web应用程序
NET Web开发中MVC设计模式的实现
ASP NET x中使用了CodeBehind技术 彻底终结了传统ASP程序开发的梦魇 程序逻辑与HTML界面元素混杂在一起 CodeBehind技术将代表程序界面(View)的 aspx文件与逻辑(Controller)代码 vb/ cs文件的分离即是一种MVC式的设计 ASP NET 中又出现了CodeBeside技术 即一个 aspx文件可以有多个 vb/ cs文件 这又方便了界面与逻辑代码的进一步分离
年 月微软发布了针对ASP NET 的MVC框架 (Preview 版本) 这是一个真正意义上的ASP NET MVC框架 该框架可以说是对之前为开发人员所熟悉的基于Web Form的应用程序开发方式的 颠覆 变化可谓 震撼
使用URL Routing技术 Web程序的URL不再是指向具体的物理页面 aspx 而是指向某个Controller的某个方法 一个典型的MVC架构的程序 其URL可能如下所示
使用该MVC架构的程序其URL不必有文件扩展名 上面这个URL中的Customer即为Controller的名字 而Index是Customer定义的一个方法名
Web程序的界面 aspx不再使用服务器端的Form:
<asp: form runat= server ></form>
那么与服务器端的Form相关的Postback以及页面生命周期的事件也不存在了
页面中不再有View State MVC下将不能使用View State来存储程序状态信息
不再提供依赖于服务器端Form的服务器控件事件 开发人员熟悉的Button_Clicked事件在MVC下将不再需要
NET MVC示例
安装完 ASP NET MVC Preview 后 VS 中会添加一个新的项目模板 ASP NET MVC Web Application 如下图所示
新建该项目后 VS 自动生成项目的文件结构如下 MVC三个组成部分各有一个文件夹来存储各自的程序文件
前面提到的URL Routing即在Global asax cs中设置
public class GlobalApplication : System Web HttpApplication
public static void RegisterRoutes(RouteCollection routes)
// 注意: IIS 以下的IIS版本需将URL格式设置为 controller mvc/action/id to enable
routes Add(new Route( controller mvc/action/id new MvcRouteHandler())
Defaults = new RouteValueDictionary(new action = Index id = )
);//设置URL Routing格式
routes Add(new Route( Default aspx new MvcRouteHandler())
Defaults = new RouteValueDictionary(new controller = Customer action = Index id = )
);//设置默认URL指向Customer Controller的Index方法
protected void Application_Start(object sender EventArgs e)
RegisterRoutes(RouteTable Routes);
下面来实现Customer 的Model Controller及View:
Model: 在项目中的Model文件夹下 新建一个 Linq to SQL Classes 将Northwind数据库中的Customer表拖拽到其设计视图中 这样就完成了Customer对应的Model 如图
Controller: 在项目中的Controller文件夹下 新建一个 MVC Controller Class 命名为CustomerContoller cs 在此类中添加一个公有方法Index 此方法及为在Global asax cs中设置好的默认URL所映射的方法
public class CustomerController : Controller
public void Index(string id)
Northwind Models NorthwindDataContext dc = new Northwind Models NorthwindDataContext();
IList<Northwind Models Customer> customers = dc Customers Take( ) ToList();//取数据库中的 个Customer记录
RenderView( Index customers);//返回Index View
View: 上面Index方法的代码表示CustomerContoller的Index方法执行后 需要返回一个名称为Index的View 以便将数据呈现给用户 下面来添加这个Index View 在项目的View文件中 新建一个子文件夹Customer 与Customer Controller有关的View将保存在此文件夹下 新建一个 MVC View Class 并命名为Index aspx 在前面的RenderView( Index customers)方法中 customers参数是Controller传递给View所需的数据 该参数的类型为IList<Northwind Models Customer> 为了在View中方便使用此强类型的数据 View aspx cs使用了如下代码 注意粗体部分
public partial class Index : ViewPage<IList<Northwind Models Customer>>
View aspx代码如下 ViewData这一成员变量的类型及为上面提到的IList<Northwind Models Customer>类型
<%@ Page Language= C# AutoEventWireup= true CodeBehind= Edit aspx cs Inherits= Northwind Views Customer Edit %>
<!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd >
< xmlns= >
<head runat= server >
<title></title>
</head>
<body>
<div>
<table>
<tr>
<td>Edit</td>
<td>Customer ID </td>
<td>Company Name </td>
<td>Contact Name </td>
<td>Contact Title </td>
</tr>
<% foreach (Northwind Models Customer customer in ViewData)
%>
<tr>
<td><a Customer mvc/Edit/<%= customer CustomerID %> >Edit</a></td><!—URL指向Customer Contoller的Edit方法 >
<td></td>
<td> <%= customer CustomerID %></td>
<td> <%= customer CompanyName %></td>
<td> <%= customer ContactName %></td>
<td><%= customer ContactTitle %></td>
</tr>
<% %>
</table>
</div>
</body>
</>
【代码 】 Index aspx
下面来实现Customer Controller的Edit方法 在CustomerController cs中添加如下代码
public void Edit(string id)
Northwind Models NorthwindDataContext dc = new Northwind Models NorthwindDataContext();
Customer c = dc Customers Single(cus => cus CustomerID == id);//从数据库中取出参数id所对应的的一个Customer记录
RenderView( Edit c);//返回Edit View
相应的在项目中的View/Customer/文件夹下 添加Edit View Edit aspx:
public partial class Edit : ViewPage<Northwind Models Customer>
<%@ Page Language= C# AutoEventWireup= true CodeBehind= Edit aspx cs Inherits= Northwind Views Customer Edit %>
<!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd >
< xmlns= >
<head runat= server >
<title></title>
</head>
<body>
<!—下面的 form 将用户的输入提交到Customer Contoller的Update方法 >
<%using( Html Form<Northwind Controllers CustomerController>(cc=>cc Update(ViewData CustomerID))) %>
<div>
Customer ID: <%= ViewData CustomerID %> <br />
Company Nmae: <%= Html TextBox( Customer CompanyName ViewData CompanyName) %> <br />
Contact Name: <%= Html TextBox( Customer ContactName ViewData ContactName) %><br />
Contact Title: <%= Html TextBox( Customer ContactTitle ViewData ContactTitle) %>
</div>
<%= Html SubmitButton( Save ) %>
<% %>
</body>
</>
代码 中使用了MVC框架中的一个帮助类Html 此类可以生产View中常用的界面元素 例如 form 文本输入框等
下面来实现CustomerController的Update方法
public void Update(string id)
Northwind Models NorthwindDataContext dc = new NorthwindDataContext();
//从数据库中取出参数id所对应的的一个Customer记录
Customer cust = dc Customers Single(c => c CustomerID == id);
//将Edit View中的用户的更改赋值到cust对象:
BindingHelperExtensions UpdateFrom(cust Request Form);
dc SubmitChanges();
RedirectToAction( Index );//跳转到Index View
【代码 】 CustomerController cs中的Update方法
cha138/Article/program/ASP/201311/21759相关参考
自己动手实现Asp.net的MVC框架 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 了解JAV
逃脱Asp.NetMVC框架 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NETMVC4框架揭秘 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第章ASPNET+
在ASP.NET里MVC框架添加AJAX支持 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一引言&
浅谈对.NETMVC框架的理解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 近来我发现有很多关
ASP.NetMVC框架配置与分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前几年的时候A
ASP.NETMVC4框架揭秘:默认实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
ASP.NETMVC4框架揭秘:总体设计 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第章&n
知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[2]
ASP.NETMVC4框架揭秘:ControllerFactory[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们
知识大全 ASP.NET MVC 4框架揭秘:ControllerFactory[1]
ASP.NETMVC4框架揭秘:ControllerFactory[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们