MVC三层架构的示例分析

发布时间:2021-10-28 10:56:02 作者:柒染
来源:亿速云 阅读:138

MVC三层架构的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

前几天收到CodeProject的电邮,asp.net mvc 的E文教程正在编写,一个老外蛮伟大的,免费贡献***章,也有100多页的内容。其中大量应用了LINQ技术(看来得花时间看看了,用统一的方式来面对所有数据源,确实还是蛮吸引人的)。当然,LINQ不是MVC必须的,你可以用很多技术实现,比如NHibernate,甚至原生的ADO.NET。

既然是实例,我直接上代码了,基础理论一搜一大把,但我还是觉得实践才是最重要的:

ASP.NET MVC三层架构实例:首先的数据访问层,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>         /// 用于数据访问         /// < /summary>         public class Database         {             /// < summary>             /// 数据库连接             /// < /summary>             protected SqlConnection conn;             /// < summary>             /// 数据库连接字符串             /// < /summary>             protected string connStr;                 public Database()             {                 this.connStr = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;             }             /// < summary>             /// 关闭数据库连接             /// < /summary>              ~Database()//析构函数不带访问修饰符             {                 try                {                     if (conn != null)                     {                         conn.Close();                     }                 }                 catch { }             }             /// < summary>             /// 打开数据库连接             /// < /summary>             protected void Open()             {                 if (conn == null)                 {                     conn = new SqlConnection(connStr);                 }                 if (conn.State.Equals(ConnectionState.Closed))                 {                     conn.Open();                 }             }             /// < summary>             /// 关闭数据库连接             /// < /summary>             protected void Close()             {                 if (conn != null)                 {                     conn.Close();                 }             }             /// < summary>             /// 获取数据,返回一个dataset             /// < /summary>             /// < param name="sql">sql语句< /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三层架构实例:业务逻辑层 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>             /// 根据货物ID获取该货物的详细信息             /// < /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);                 //如果有查询到数据的话,填充属性                 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>             /// 编号             /// < /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>             /// 说明             /// < /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三层架构实例:***就是显示层,前台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="货物编号(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三层架构实例:后台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之间的数字')     // -->< /mce:script>");                          return;                     }                 }                 Category category = new Category();                 category.LoadData(categoryID);                     lblCategoryInfo.Text = "编号:" + category.CategoryID;                 lblCategoryInfo.Text += "< BR>名称:" + category.CategoryName;                 lblCategoryInfo.Text += "< BR>描述:" + category.Description;                 byte[] image = category.Image;                 //northwind数据库中的image字段(byte数组)的前面78是无用的,必须剔除才能正常显示图像                 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;             }         }     }

关于MVC三层架构的示例分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. 三层架构和MVC的区别是什么
  2. MVC与三层架构

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

asp.net mvc

上一篇:ASP.NET主机资源控制的示例分析

下一篇:Mysql数据分组排名实现的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》