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

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=" 8pt " headerstyle-backcolor="#aaaadd"

         enableviewstate="false" />

    </form>

   </body>

</html>

 

这个实现文件包含了模型、视图、控制器这三种角色,但是没有将它们分割为不同的文件或类。其中的视图对象用HTML实现,用一个数据绑定控件来显示从数据库返回的DataSet中的数据。模型角色在Page_Load SubmitBtn_Click函数中实现。而控制器角色并没有显式的实现,而是由ASP.NET隐式实现。程序运行时,当用户发出页面的请求,页面随着用户的选择更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值