国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net用三層實現多條件檢索示例

2024-07-10 12:43:10
字體:
來源:轉載
供稿:網友

眾所周知,三層將項目分為界面層,業務邏輯層和數據訪問層(以最基本的三層為例)

同樣都知道,多條件檢索其實就是根據用戶選擇的條件項,然后來拼sql語句

那么,既然要根據用戶選擇的條件項來拼sql語句,就肯定要在界面層接收用戶的選擇,這時候問題來了:

我是要在界面層拼sql語句嗎,這么做完全沒問題,功能也完全可以實現,可是這么一來,你是破壞了三層的原則了嗎

那么還架三層做什么?

那我在數據訪問層拼sql語句好了,然后問題又來了:

在數據訪問層拼的話這么知道用戶選擇了哪幾個條件項呢,根據分層的原則,是不能把諸如textBox1.Text這樣的數據傳給數據訪問層的

其實解決的方案就是第二種方式,只是中間通過一個條件模型類來傳遞用戶的選擇

條件模型類如下:

public class SearchModel { public string Name { get; set; }//記錄數據庫字段名 public string Value { get; set; }//記錄對應的值 public Action Action { get; set; }//記錄相應的操作 }

選擇很難看出這個類的作用到底是什么,接著走你~

之后要準備一個枚舉:

public enum Action { Lessthan, Greatthan, Like, Equart }

對應數據中中的幾個操作,如<,>,like,=等,可以根據自己的需要添加

當然你也可以用數字,不過魔鬼數字最好不要使用,所以還是定義一個枚舉吧~動動手指頭就ok了

假設現在要對一個圖書表進行多條件檢索

在界面層中的代碼:

List<SearchModel> ss = new List<SearchModel>(); if (!string.IsNullOrEmpty(Request.Form["txtName"]))//如果用戶在名字框中輸入了文字 { SearchModel model = new SearchModel(); model.Name = "BookName";//要操作的字段為書名 model.Value = Request.Form["txtName"];//對應的值為用戶輸入的文字 model.Action = Action.Like;//操作為like ss.Add(model); }//以下類似 if (!string.IsNullOrEmpty(Request.Form["txtAuthor"])) { SearchModel model = new SearchModel(); model.Name = "Author"; model.Value = Request.Form["txtAuthor"]; model.Action = Action.Like; ss.Add(model); } if (!string.IsNullOrEmpty(Request.Form["categoryId"])) { SearchModel model = new SearchModel(); model.Name = "CategoryId"; model.Value = Request.Form["categoryId"]; model.Action = Action.Equart; ss.Add(model); } if (!string.IsNullOrEmpty(Request.Form["publisherId"])) { SearchModel model = new SearchModel(); model.Name = "PublisherId"; model.Value = Request.Form["publisherId"]; model.Action = Action.Equart; ss.Add(model); } if (!string.IsNullOrEmpty(Request.Form["txtISBN"])) { SearchModel model = new SearchModel(); model.Name = "ISBN"; model.Value = Request.Form["txtISBN"]; model.Action = Action.Like; ss.Add(model); } if (!string.IsNullOrEmpty(Request.Form["isDiscount"])) { SearchModel model = new SearchModel(); model.Name = "Discount"; model.Value = "1"; model.Action = Action.Equart; ss.Add(model); } List<T_Books> books = searchBll.Searc(ss);//這里調用Bll進行操作            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 全椒县| 新昌县| 盘山县| 丁青县| 桃园县| 昌江| 格尔木市| 昆山市| 喀喇沁旗| 菏泽市| 恩施市| 荣成市| 云安县| 岑巩县| 峨眉山市| 曲麻莱县| 贵德县| 开阳县| 上虞市| 湄潭县| 仁化县| 深州市| 西林县| 隆尧县| 泰来县| 巴马| 高要市| 象州县| 高密市| 新沂市| 建湖县| 霍城县| 田阳县| 朝阳市| 彰化市| 清丰县| 玉屏| 沙河市| 启东市| 浙江省| 启东市|