在ASP.NET中实现MVC模式(一)
来源:互联网 发布:浙江大学网络认证 编辑:程序博客网 时间:2024/06/05 02:45
在ASP.NET中实现Model-View-Controller模式(一)
背景:
当利用ASP.NET创建Web应用程序时,基于程序的复杂性,必须把程序分割成不同的部分以减少代码的重复及减少日后变革时所引起的改动。
实现策略:
为了解释如何在ASP.NET中实现(MVC)模型-视图-控制器模式,以及说明将软件分离成模型、视图、及控制器角色的好处,在此以一个示例程序为例进行说明。这个示例程序是一个带有下拉框的单页程序,它的功能是显示数据库中的数据。如下图。
当用户在下拉框中选择了一个记录,并单击Submit按钮的时候,程序从数据库中搜索与选中记录相关的数据库记录,并以列表的形式显示出来。下面,将以三种不同的实现方式进行实现。
单页模式
在ASP.NET中有许多解决这个问题的办法,其中最简单也是最直接的办法就是把所有的代码都放到一个文件中,并起名为Solution.ASPx,实现代码如下:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<head>
<title>start</title>
<script language="c#" runat="server">
void Page_Load(object sender, System.EventArgs e)
{
String selectCmd = "select * from Recording";
SqlConnection myConnection =
new SqlConnection(
"server=(local);database=recordings;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd,
myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Recording");
recordingSelect.DataSource = ds;
recordingSelect.DataTextField = "title";
recordingSelect.DataValueField = "id";
recordingSelect.DataBind();
}
void SubmitBtn_Click(Object sender, EventArgs e)
{
String selectCmd =
String.Format(
"select * from Track where recordingId = {0} order by id",
(string)recordingSelect.SelectedItem.Value);
SqlConnection myConnection =
new SqlConnection(
"server=(local);database=recordings;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd,
myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Track");
MyDataGrid.DataSource = ds;
MyDataGrid.DataBind();
}
</script>
</head>
<body>
<form id="start" method="post" runat="server">
<h3>Recordings</h3>
Select a Recording:<br />
<ASP:dropdownlist id="recordingSelect" runat="server" />
<ASP:button runat="server" text="Submit" OnClick="SubmitBtn_Click" />
<p/>
<ASP:datagrid id="MyDataGrid" runat="server" width="700"
backcolor="#ccccff" bordercolor="black" showfooter="false"
cellpadding="3" cellspacing="0" font-name="Verdana"
font-size="
enableviewstate="false" />
</form>
</body>
</html>
这个实现文件包含了模型、视图、控制器这三种角色,但是没有将它们分割为不同的文件或类。其中的视图对象用HTML实现,用一个数据绑定控件来显示从数据库返回的DataSet中的数据。模型角色在Page_Load 和 SubmitBtn_Click函数中实现。而控制器角色并没有显式的实现,而是由ASP.NET隐式实现。程序运行时,当用户发出页面的请求,页面随着用户的选择更新。
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>- 在ASP.NET中实现MVC模式(一)
- 在ASP.NET中实现MVC模式(一)
- 在ASP.NET中实现MVC模式(二)
- 在ASP.NET中实现MVC模式(三)
- 在ASP.NET中实现MVC模式(四)
- 在ASP.NET中实现MVC模式(五)
- 在ASP.NET中实现MVC模式(三)
- 在ASP.NET中实现MVC模式(二)
- 在ASP.NET中实现MVC模式(四)
- 在ASP.NET中实现MVC模式(五)
- asp.net mvc中自行搭建实现工厂模式的spring.net+三层架构(一)
- 在Asp.net MVC模式下实现网站地图导航
- ASP.NET中实现模型-视图-控制器(MVC)模式
- [转帖]ASP.NET中MVC框架模式的实现
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- dwr与session
- ASP.NET中根据XML动态创建并使用WEB组件(一)
- ASP.NET中根据XML动态创建并使用WEB组件(二)
- 我的新Blog
- 开发基于Web的CSS设计器.代码参考
- 在ASP.NET中实现MVC模式(一)
- 我国网民数达2.21亿人超美国居全球首位
- 在DWR调用的java代码中使用Session,Request,Response等
- 在ASP.NET中实现MVC模式(三)
- C# 多网卡 Server Listen
- DWR中取得session等信息
- 越过调试这道槛——ASP.NET无法调试问题剖析
- ASP.NET缓存:方法和最佳实践
- VC#数据库编程1