首页  :: 订阅 订阅  :: 管理

ASP.Net MVC模式的演进

Posted on 2005-04-22 10:31  GaoJie[高杰]  阅读(983)  评论(2编辑  收藏  举报
==============================
单个 ASP.NET 页
==============================
<%@ 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>录音</h3> 
         选择录音:
<br /> 
         
<asp:dropdownlist id="recordingSelect" runat="server" /> 
         
<asp:button runat="server" text="提交" 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> 

====================================
代码隐藏重构
====================================
<%@ Page language="c#" Codebehind="Solution.aspx.cs"  
   AutoEventWireup
="false" Inherits="Solution" %> 
<html> 
   
<head> 
      
<title>解决方案</title> 
   
</head> 
   
<body> 
      
<form id="Solution" method="post" runat="server"> 
         
<h3>录音</h3> 
         选择录音:
<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" %> 

using System; 
using System.Data; 
using System.Data.SqlClient; 
public class Solution : System.Web.UI.Page 

   
protected System.Web.UI.WebControls.Button submit; 
   
protected System.Web.UI.WebControls.DataGrid MyDataGrid; 
   
protected System.Web.UI.WebControls.DropDownList recordingSelect; 
   
private void Page_Load(object sender, System.EventArgs e) 
   

      
if(!IsPostBack) 
      

         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(); 
   }
 
   
Web Form Designer generated code 
}
 

===============================
Model
-View-Controller 重构
===============================
using System; 
using System.Collections; 
using System.Data; 
using System.Data.SqlClient; 
public class DatabaseGateway 

   
public static DataSet GetRecordings() 
   

      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"); 
      
return ds; 
   }
 
   
public static DataSet GetTracks(string recordingId) 
   

      String selectCmd 
=  
         String.Format( 
         
"select * from Track where recordingId = {0} order by id"
         recordingId); 
      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"); 
      
return ds; 
   }
 

using System; 
using System.Data; 
using System.Collections; 
using System.Web.UI.WebControls; 
public class Solution : System.Web.UI.Page 

   
protected System.Web.UI.WebControls.Button submit; 
   
protected System.Web.UI.WebControls.DataGrid MyDataGrid; 
   
protected System.Web.UI.WebControls.DropDownList recordingSelect; 
   
private void Page_Load(object sender, System.EventArgs e) 
   

      
if(!IsPostBack) 
      

         DataSet ds 
= DatabaseGateway.GetRecordings(); 
         recordingSelect.DataSource 
= ds; 
         recordingSelect.DataTextField 
= "title"
         recordingSelect.DataValueField 
= "id"
         recordingSelect.DataBind(); 
      }
 
   }
 
   
void SubmitBtn_Click(Object sender, EventArgs e)  
   
{    
      DataSet ds 
=  
         DatabaseGateway.GetTracks( 
         (
string)recordingSelect.SelectedItem.Value); 
      MyDataGrid.DataSource 
= ds; 
      MyDataGrid.DataBind(); 
   }
 
   
Web Form Designer generated code 
}