在ASP.NET中实现MVC模式(二)

asp.net

在ASP.NET中实现Model-View-Controller模式(二)

MVC模式形容这种实现方式是一种被动的实现机制,ASP.NET充当了程序执行中的控制器的角色,但程序员必须将具体的事件处理方法添加到事件的响应函数中。如在这个例子中,控制器在页面加载之前调用Page_Load函数并执行其中的代码,当用户点击Submit按钮时由系统调用SubmitBtn_Click函数并执行。

这种将代码都包含在一个文件中的实现方式非常的直接,而且当应用程序很小并不经常修改的时候也可以说是一种好的方法,但是如果下面的一些情况出现的话你也许会开始考虑修改这种实现方法:

使编程的工作并行并减少由此带来的发生错误的可能性。为了增加工作的并行性,提高效率,你可能想让不同的人编写视图的代码及模型代码并尽力减少这种工作方式所带来的出错的可能性。例如:当所有的代码都在一个文件中的话,那么一个编程人员可能会在改变DataGrid显示格式的时候无意中修改数据访问的代码。这种错误是很难被发现的,直到页面整体被编译的时候才会显现出来。。

使你的数据访问代码在其它页面中重用。在这种单文件的实现方式中,除了拷贝代码,没有其它的方法能够做到代码的重用。拷贝的代码是很难被维护的,因为一旦代码发生了变化,你必须在所有的页面都进行修改。

为了避免上面这些情况的发生,ASP.NET引入了代码分离(Code-behind)机制。

用代码分离机制进行重构

Microsoft Visual Studio .NET中的代码分离机制使视图层的代码与模型及控制器的代码能够很容易的分离。每个ASP.NET页面都有一种机制,能够使其要调用的方法在一个与其分离的类中实现。这种方式使用起来非常的方便,而且也可以利用Visual Studio .NET中的一些其它特性共同完成开发工作。比如如当你利用代码分离的机制开发你的页面的时候,可以利用智能感知(IntelliSense technology)显示出一个可用方法的列表方便编程。而智能感知技术在.aspx页面中是不能使用的。

下面给出的是上面例子利用代码分离机制的实现。

视图部分:

视图层的代码现在一个单独的文件中实现。Solution.aspx:

<%@ Page language="c#" Codebehind="Solution.aspx.cs"

AutoEventWireup="false" Inherits="Solution" %>

<html>

<head>

<title>Solution</title>

</head>

<body>

<form id="Solution" method="post" runat="server">

<h3>Recordings</h3>

Select a Recording:<br/>

<asp:dropdownlist id="recordingSelect" runat="server" />

<asp:button id="submit" runat="server" text="Submit"

enableviewstate="False" />

<p/>

<asp:datagrid id="MyDataGrid" runat="server" width="700"

backcolor="#ccccff" bordercolor="black" showfooter="false"

cellpadding="3" cellspacing="0" font-name="Verdana" font-size="8pt"

headerstyle-backcolor="#aaaadd" enableviewstate="false" />

</form>

</body>

</html>

大部分代码都与前面的解决方案的代码相同。主要的不同点是第一行:

<%@ Page language="c#" Codebehind="Solution.aspx.cs"

AutoEventWireup="false" Inherits="Solution" %>

这行告诉ASP.NET执行环境,这个页面的具体实现机制在一个单独的类中。因为这个页面是独立的,因此如果数据访问的代码发生变化,这个页面并不需要做任何改动。同样,一些设计师也可以改变这个页面的代码而不会引起任何数据访问的错误。

时间: 2024-12-30 21:38:31

在ASP.NET中实现MVC模式(二)的相关文章

在ASP.NET中实现MVC模式(五)

asp.net 在ASP.NET中实现Model-View-Controller模式(五) 测试 将模型部分从ASP.NET环境中分离出来能够使模型部分更容易的被测试.在ASP.NET环境中进行测试的话,你必须同时测试很多方面,如HTML代码是否正确,而读取HTML代码的工作是非常烦闷的.将模型部分分离出来,使你能够对模型部分做单独的单元测试.下面是NUnit (http://nunit.org)对模型部分进行单元测试的例子. using System; using NUnit.Framewor

在ASP.NET中实现MVC模式(一)

asp.net 在ASP.NET中实现Model-View-Controller模式(一) 背景: 当利用ASP.NET创建Web应用程序时,基于程序的复杂性,必须把程序分割成不同的部分以减少代码的重复及减少日后变革时所引起的改动. 实现策略: 为了解释如何在ASP.NET中实现(MVC)模型-视图-控制器模式,以及说明将软件分离成模型.视图.及控制器角色的好处,在此以一个示例程序为例进行说明.这个示例程序是一个带有下拉框的单页程序,它的功能是显示数据库中的数据.如下图. 当用户在下拉框中选择了

在ASP.NET中实现MVC模式(四)

asp.net 在ASP.NET中实现Model-View-Controller模式(四) 模型-视图-控制器分离的重构 为了解决上面所遗留的问题,你必须将模型与控制器角色分离. 视图的实现代码与前部分相同. 模型 下面的代码例子使模型角色仅仅依赖于数据库,而不包含任何与视图相依赖的代码. using System; using System.Collections; using System.Data; using System.Data.SqlClient; public class Dat

在ASP.NET中实现Model-View-Controller模式(2)

asp.net|model   模型-视图-控制器分离的重构 为了解决上面所遗留的问题,你必须将模型与控制器角色分离. 视图的实现代码与前部分相同. 模型 下面的代码例子使模型角色仅仅依赖于数据库,而不包含任何与视图相依赖的代码. using System; using System.Collections; using System.Data; using System.Data.SqlClient; public class DatabaseGateway { public static D

asp.net中怎么实现扫描二维码可以查看另外一个表单中的详细信息

问题描述 asp.net中怎么实现扫描二维码可以查看另外一个表单中的详细信息 就是在二维码生成的时候如果把另外一个表单中的内容给穿进去,就好像跳转页面似得,只不过变成扫描才能查看信息 解决方案 你的扫描是用户手机扫描还是什么?用户手机扫描你要自己弄个app给用户用,附带二维码扫描功能,二维码存储一个guid,app扫描得到二维码后回发服务器存储,客户端这个二维码页面用计时器和ajax不断轮训服务器获取对应的guid,存在了就控制页面跳转到信息页面或者ajax返回相关信息显示出来

php中的MVC模式运用技巧_php技巧

php中的MVC模式运用 首先我来举个例子: 一个简单的文章显示系统 简单期间,我们假定这个文章系统是只读的,也就是说这个例子将不涉及文章的发布,现在开始了. 由于只涉及数据库的读取,所以我定义了两个interface Interface DataOperation {    public function select($info);    public function selectNum($info); } 上面这interface定义了读取数据的接口,select方法将返回所需要的文章.

理解javascript中的MVC模式_javascript技巧

MVC模式是软件工程中一种软件架构模式,一般把软件模式分为三部分,模型(Model)+视图(View)+控制器(Controller); 模型:模型用于封装与应用程序的业务逻辑相关的数据以及对数据处理的方法.模型有对数据直接访问的权利.模型不依赖 "视图" 和 "控制器", 也就是说 模型它不关心页面如何显示及如何被操作. 视图:视图层最主要的是监听模型层上的数据改变,并且实时的更新html页面.当然也包括一些事件的注册或者ajax请求操作(发布事件),都是放在视图

asp.net 中的MVC好在哪呢?

问题描述 除了可以耍酷的把真实访问的aspx页面藏起来以及节约viewstate的数据传输量之外,多了个严重的缺点:在开发cshtml时没有服务器端控件可以用了,也没有可视化界面,得手写html标签了.这个缺点使开发成本急剧增加.另外,在asp.netwebform中也是可以通过建立业务模型实现代码重用的.谁来告诉我,asp.net的MVC到底好在哪?谢谢! 解决方案 解决方案二:MVC好久没用,几乎都快忘了.无论是设计模式还是框架也好,都是根据项目本身的需要去选择的,再好的设计模式或者框架都不

在ASP.NET中实现Model-View-Controller模式(1)

asp.net|model   背景:   当利用ASP.NET创建Web应用程序时,基于程序的复杂性,必须把程序分割成不同的部分以减少代码的重复及减少日后变革时所引起的改动. 实现策略: 为了解释如何在ASP.NET中实现(MVC)模型-视图-控制器模式,以及说明将软件分离成模型.视图.及控制器角色的好处,在此以一个示例程序为例进行说明.这个示例程序是一个带有下拉框的单页程序,它的功能是显示数据库中的数据.   当用户在下拉框中选择了一个记录,并单击Submit按钮的时候,程序从数据库中搜索与