您好,登錄后才能下訂單哦!
MVC三層架構(gòu)的示例分析,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
前幾天收到CodeProject的電郵,asp.net mvc 的E文教程正在編寫(xiě),一個(gè)老外蠻偉大的,免費(fèi)貢獻(xiàn)***章,也有100多頁(yè)的內(nèi)容。其中大量應(yīng)用了LINQ技術(shù)(看來(lái)得花時(shí)間看看了,用統(tǒng)一的方式來(lái)面對(duì)所有數(shù)據(jù)源,確實(shí)還是蠻吸引人的)。當(dāng)然,LINQ不是MVC必須的,你可以用很多技術(shù)實(shí)現(xiàn),比如NHibernate,甚至原生的ADO.NET。
既然是實(shí)例,我直接上代碼了,基礎(chǔ)理論一搜一大把,但我還是覺(jué)得實(shí)踐才是最重要的:
ASP.NET MVC三層架構(gòu)實(shí)例:首先的數(shù)據(jù)訪問(wèn)層,Database類:
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; namespace northWind3Tier.DataAccessLayer { /// < summary> /// 用于數(shù)據(jù)訪問(wèn) /// < /summary> public class Database { /// < summary> /// 數(shù)據(jù)庫(kù)連接 /// < /summary> protected SqlConnection conn; /// < summary> /// 數(shù)據(jù)庫(kù)連接字符串 /// < /summary> protected string connStr; public Database() { this.connStr = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString; } /// < summary> /// 關(guān)閉數(shù)據(jù)庫(kù)連接 /// < /summary> ~Database()//析構(gòu)函數(shù)不帶訪問(wèn)修飾符 { try { if (conn != null) { conn.Close(); } } catch { } } /// < summary> /// 打開(kāi)數(shù)據(jù)庫(kù)連接 /// < /summary> protected void Open() { if (conn == null) { conn = new SqlConnection(connStr); } if (conn.State.Equals(ConnectionState.Closed)) { conn.Open(); } } /// < summary> /// 關(guān)閉數(shù)據(jù)庫(kù)連接 /// < /summary> protected void Close() { if (conn != null) { conn.Close(); } } /// < summary> /// 獲取數(shù)據(jù),返回一個(gè)dataset /// < /summary> /// < param name="sql">sql語(yǔ)句< /param> /// < returns>< /returns> public DataSet GetDataSet(string sql) { Open(); SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); DataSet dataset = new DataSet(); adapter.Fill(dataset); Close(); return dataset; } } }
ASP.NET MVC三層架構(gòu)實(shí)例:業(yè)務(wù)邏輯層 Category類:
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.IO; using northWind3Tier.DataAccessLayer; namespace northWind3Tier.BusinessLayer { public class Category { /// < summary> /// 根據(jù)貨物ID獲取該貨物的詳細(xì)信息 /// < /summary> /// < param name="categoryID">< /param> public void LoadData(int categoryID) { Database db = new Database(); string sql = "select * from [Categories] where [CategoryID]="+categoryID; DataSet ds = db.GetDataSet(sql); //如果有查詢到數(shù)據(jù)的話,填充屬性 if (ds.Tables[0].Rows.Count > 0) { this.categoryID =(int) ds.Tables[0].Rows[0]["CategoryID"]; this.categoryName = ds.Tables[0].Rows[0]["CategoryName"].ToString(); this.description = ds.Tables[0].Rows[0]["Description"].ToString(); this.image =(byte[]) ds.Tables[0].Rows[0]["Picture"]; } } /// < summary> /// 字段和屬性 /// < /summary> #region private int categoryID; /// < summary> /// 編號(hào) /// < /summary> public int CategoryID { get { return categoryID; } set { categoryID = value; } } private string categoryName; /// < summary> /// 名稱 /// < /summary> public string CategoryName { get { return categoryName; } set { categoryName = value; } } private string description; /// < summary> /// 說(shuō)明 /// < /summary> public string Description { get { return description; } set { description = value; } } private byte[] image; /// < summary> /// 圖像 /// < /summary> public byte[] Image { get { return image; } set { image = value; } } #endregion } }
ASP.NET MVC三層架構(gòu)實(shí)例:***就是顯示層,前臺(tái)aspx代碼:
< %@ Page Language="C#" AutoEventWireup="true" CodeBehind="CateqoryQuery.aspx.cs" Inherits="northWind3Tier.CateqoryQuery" %> < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html xmlns="http://www.w3.org/1999/xhtml" > < head runat="server"> < title>Untitled Page< /title> < /head> < body> < form id="form1" runat="server"> < div> < asp:Label ID="Label1" runat="server" Text="貨物編號(hào)(1-9):">< /asp:Label> < asp:TextBox ID="TextBox1" runat="server">< /asp:TextBox> < asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="查詢" Width="65px" /> < br /> < br /> < asp:Label ID="lblCategoryInfo" runat="server" Text="Label">< /asp:Label> < br /> < asp:Image ID="Image1" runat="server" /> < /div> < /form> < /body> < /html>
ASP.NET MVC三層架構(gòu)實(shí)例:后臺(tái)cs代碼:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using northWind3Tier.BusinessLayer; using System.IO; namespace northWind3Tier { public partial class CateqoryQuery : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { int categoryID = -1; if (TextBox1.Text != "") { try { categoryID = Convert.ToInt32(TextBox1.Text); //if ((categoryID < 1) || (categoryID > 9)) } catch { Response.Write("< mce:script type="text/javascript">< !-- alert('只能輸入1-9之間的數(shù)字') // -->< /mce:script>"); return; } } Category category = new Category(); category.LoadData(categoryID); lblCategoryInfo.Text = "編號(hào):" + category.CategoryID; lblCategoryInfo.Text += "< BR>名稱:" + category.CategoryName; lblCategoryInfo.Text += "< BR>描述:" + category.Description; byte[] image = category.Image; //northwind數(shù)據(jù)庫(kù)中的image字段(byte數(shù)組)的前面78是無(wú)用的,必須剔除才能正常顯示圖像 byte[] temp = new byte[image.Length - 78]; Array.Copy(image , 78, temp, 0, image.Length - 78); string strPath = "photo/temp.JPG"; string strPhotoPath =strPath; //保存圖片文件 BinaryWriter bw = new BinaryWriter(File.Open(Server.MapPath (strPhotoPath), FileMode.OpenOrCreate)); bw.Write(temp); bw.Close(); //顯示圖片 this.Image1.ImageUrl = strPath; } } }
關(guān)于MVC三層架構(gòu)的示例分析問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。