ASP.Net实现海鲜添加(三层架构,异常处理)

2024-01-04 07:20

本文主要是介绍ASP.Net实现海鲜添加(三层架构,异常处理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

演示功能:

点击启动生成页面

点击添加跳转新界面

 此处设置文本框多行

点击Button添加

步骤:

1、建文件

下图是三层架构列表,Models里面有模拟数据库中列的类,DAL中有DBHelper和service,BLL中有BllManager文件用于ui界面直接调用

建照片文件图片,数据夹用于展示库存地址 

2、添加引用关系

DAL引用Models文件,BLL引用DAL和Models文件,主文件WebApplication1引用Bll和Models

3、根据数据库中的列写Models下的XueshengModels类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Models
{public  class SeaFoodTypeModel{private string infoTitle;private string infoID;public string InfoID{get { return infoID; }set { infoID = value; }}private string pubTime;public string PubTime{get { return pubTime; }set { pubTime = value; }}public string InfoTitle
{get { return infoTitle; }set { infoTitle = value; }
}private string infoPic;public string InfoPic
{get { return infoPic; }set { infoPic = value; }
}private string type;public string Type
{get { return type; }set { type = value; }
}private string infoDetail;public string InfoDetail
{get { return infoDetail; }set { infoDetail = value; }
}
private string price;public string Price
{get { return price; }set { price = value; }
}}
}

4、DAL下的DBHelper(对数据库进行操作)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using    System.Data.SqlClient;
namespace Dal
{public    class DBHelper{public static string connstr = "server=.;database=SeaFoodDB;uid=sa;pwd=123123";public static SqlConnection conn = null;public static void Connect() {if (conn==null){conn = new SqlConnection(connstr);}conn.Close();conn.Open();}public static bool NoQuery(string sql) {try{Connect();SqlCommand cmd = new SqlCommand(sql,conn);int temp=     cmd.ExecuteNonQuery();conn.Close();return temp > 0;}catch (Exception ex){return false;    }}public static SqlDataReader Reader(string sql){Connect();SqlCommand cmd = new SqlCommand(sql, conn);return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);}}
}

5、DAL数据访问层下的service文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace Dal
{public   class DalService{public static List<Models.SeaFoodTypeModel> Zhanshi() {List<Models.SeaFoodTypeModel> list = new List<Models.SeaFoodTypeModel>();string sql = "select * from SeaFoodInfo";SqlDataReader read=   Dal.DBHelper.Reader(sql);while (read.Read()){Models.SeaFoodTypeModel model = new Models.SeaFoodTypeModel();model.InfoID = read["InfoID"].ToString();model.PubTime = read["PubTime"].ToString();model.Type = read["Type"].ToString();model.Price = read["Price"].ToString();model.InfoPic = read["InfoPic"].ToString();model.InfoTitle = read["InfoTitle"].ToString();model.InfoDetail = read["InfoDetail"].ToString();list.Add(model);}return list;}public static bool Tianjia(string InfoTitle, string TypeName, string InfoDetail, string Price){string sql = string.Format("insert SeaFoodInfo values('{0}', 'yu.jpg', '{1}', '{2}', '{3}', GETDATE())", InfoTitle, TypeName, InfoDetail, Price);return DBHelper.NoQuery(sql);}}
}

6、BLL业务逻辑层下调用DAL的文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Bll
{
public     class BllManager{public static List<Models.SeaFoodTypeModel> Zhanshi() {return  Dal.DalService.Zhanshi();}public static bool Tianjia(string InfoTitle, string TypeName, string InfoDetail, string Price){return Dal.DalService.Tianjia( InfoTitle,  TypeName,  InfoDetail,  Price);}}
}

7、ui表现层主界面前端部分

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title>
</head>
<body><form id="form1" runat="server"><div><a href="Tianjia.aspx">添加海鲜</a><asp:Repeater ID="Repeater1" runat="server"><HeaderTemplate><table border="1"><tr><th>信息编号</th><th>信息标题</th><th>信息图片</th><th>海鲜类型</th><th>信息详情</th><th>价格</th><th>发布时间</th></tr></HeaderTemplate><ItemTemplate><tr><td><%#Eval("InfoID") %></td><td><%#Eval("InfoTitle") %></td><td><img  src="Images/<%#Eval("InfoPic") %>" width="60px" height="50px"/></td><td><%#Eval("Type") %></td><td><%#Eval("InfoDetail") %></td><td><%#Eval("Price") %></td><td><%#Eval("PubTime") %></td></tr></ItemTemplate><FooterTemplate></table></FooterTemplate></asp:Repeater></div></form>
</body>
</html>

8、ui表现层主界面后端部分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace WebApplication2
{public partial class WebForm1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.Repeater1.DataSource = Bll.BllManager.Zhanshi();this.Repeater1.DataBind();}}
}

9、ui表现层添加界面前端部分

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Tianjia.aspx.cs" Inherits="WebApplication2.Tianjia" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title>
</head>
<body><form id="form1" runat="server"><div><a href="WebForm1.aspx">返回</a><br /><asp:Label ID="Label1" runat="server" Text="信息标题"></asp:Label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="信息标题不能为空" ControlToValidate="TextBox1"></asp:RequiredFieldValidator><br />    <asp:Label ID="Label2" runat="server" Text="海鲜类型"></asp:Label><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="海鲜类型不能为空" ControlToValidate="TextBox2"></asp:RequiredFieldValidator><br />    <asp:Label ID="Label3" runat="server" Text="信息详情"></asp:Label><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="信息详情不能为空" ControlToValidate="TextBox3"></asp:RequiredFieldValidator><br />    <asp:Label ID="Label4" runat="server" Text="价格"></asp:Label><asp:TextBox ID="TextBox4" runat="server" style="margin-left: 31px"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="价格" ControlToValidate="TextBox4"></asp:RequiredFieldValidator><br /> <asp:Button ID="Button1" runat="server" Text="添加" OnClick="Button1_Click" /></div></form>
</body>
</html>

10、ui表现层添加界面后端部分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace WebApplication2
{public partial class Tianjia : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;}protected void Button1_Click(object sender, EventArgs e){if (Bll.BllManager.Tianjia(TextBox1.Text.ToString(), TextBox2.Text.ToString(), TextBox3.Text.ToString(), TextBox4.Text.ToString())){ClientScript.RegisterStartupScript(GetType(),"success", "alert('正确!');location.href='WebForm1.aspx'",true);}else{ClientScript.RegisterStartupScript(GetType(), "success", "alert('错误!')", true);};}}
}

这篇关于ASP.Net实现海鲜添加(三层架构,异常处理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/568571

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

golang版本升级如何实现

《golang版本升级如何实现》:本文主要介绍golang版本升级如何实现问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录golanwww.chinasem.cng版本升级linux上golang版本升级删除golang旧版本安装golang最新版本总结gola

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的