为了账号安全,请及时绑定邮箱和手机立即绑定

发现 MODEL 层 很是 麻烦,所以改写了下,代码如下,不晓得合适不,求指点

发现 MODEL 层 很是 麻烦,所以改写了下,代码如下,不晓得合适不,求指点

千巷猫影 2018-12-06 22:53:17
MODE 层 代码 namespace MODEL{ public class Article { int _ID=0; int _CID=0;//类别ID string _Title="";//标题 DateTime _AddDate=DateTime.Now;//添加日期 string _Content="";//内容 int _Hits=0;//点击次数 int _Count=0;//评论次数 public Article() { } //数据库记录实例化为 Article,这个地方 从数据库 读出一条记录后 可以 直接实例化 MODEL,不需要 在 一个个去写 public Article(DataRow dataRow) { DataColumnCollection DCC = dataRow.Table.Columns; if (DCC.Contains("id")) { _ID = DataHelper.Int(dataRow["id"]); } if (DCC.Contains("cid")) { _CID = DataHelper.Int(dataRow["cid"]); } if (DCC.Contains("hits")) { _Hits = DataHelper.Int(dataRow["hits"]); } if (DCC.Contains("count")) { _Count = DataHelper.Int(dataRow["count"]); } if (DCC.Contains("adddate")) { _AddDate = DataHelper.dateTime(dataRow["adddate"]); } if (DCC.Contains("title")) { _Title = DataHelper.String(dataRow["title"] ); } if (DCC.Contains("content")) { _Content =DataHelper.String( dataRow["content"] ); } } //外部接受过来的数据实例化类 使用 hashTable 构造 类 public Article(Hashtable hashtable) { if (hashtable.Contains("id")) { _ID = DataHelper.Int(hashtable["id"]); } if (hashtable.Contains("cid")) { _CID = DataHelper.Int(hashtable["cid"]); } if (hashtable.Contains("hits")) { _Hits = DataHelper.Int(hashtable["hits"]); } if (hashtable.Contains("count")) { _Count = DataHelper.Int(hashtable["count"]); } if (hashtable.Contains("adddate")) { _AddDate = DataHelper.dateTime(hashtable["adddate"]); } if (hashtable.Contains("title")) { _Title = DataHelper.String(hashtable["title"] ); } if (hashtable.Contains("content")) { _Content = DataHelper.String(hashtable["content"] ); } } public Article(int id,int cid,string title,DateTime addDate,string content,int hits,int count) { _ID = id; _CID = cid; _Title = title; _AddDate = addDate; _Content = content; _Hits = hits; _Count = count; } public Article(int cid, string title, DateTime addDate, string content, int hits, int count) { _CID = cid; _Title = title; _AddDate = addDate; _Content = content; _Hits = hits; _Count = count; } public Article( int cid, string title, string content) { _CID = cid; _Title = title; _Content = content; } public Article(int id, int cid, string title, string content) { _ID = id; _CID = cid; _Title = title; _Content = content; } public int ID { get { return _ID; } set { _ID = value; } } public int CID { get { return _CID; } set { _CID = value; } } public string Title { get { return _Title; } set { _Title = value; } } public DateTime AddDate { get { return _AddDate; } set { _AddDate = value; } } public string Content { get { return _Content; } set { _Content = value; } } public int Hits { get { return _Hits; } set { _Hits = value; } } public int Count { get { return _Count; } set { _Count = value; } } }} RequestData 类:代替 Request.Form; 上面用到的,作用是 把 Request.Form;里面的 name value 保存到一个 hashTable 里面 using System;using System.Collections;using System.Collections.Generic;using System.Collections.Specialized;using System.Web;/// <summary>///RequestData 的摘要说明/// </summary>public class RequestData{ public RequestData() { // //TODO: 在此处添加构造函数逻辑 // } public static Hashtable Get() { Hashtable _Hashtable = new Hashtable(); NameValueCollection NVC = HttpContext.Current.Request.Form; for (int i = 0; i < NVC.Count; i++) { _Hashtable.Add(NVC.Keys[i].ToString().ToLower(), NVC[NVC.Keys[i]]); } return _Hashtable; }} UI: ArticleAdd.aspx <html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title></head><body><form action="?action=save" method="post"> 标题:<input type="text" value="134" name="Title" /><br /> 内容:<input type="text" value="134" name="Content" /><br /> 日期:<input type="text" value="1989 07 18" name="AddDate" /><br /> 类别ID:<input type="text" value="134" name="CID" /><br /> <input type="submit" value="submit" /></form></body></html> ArticleAdd.aspx.cs using System;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Collections;using MODEL;public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { Hashtable Has = RequestData.Get(); Article ArticleMOD=new Article(Has); //实例化 MODEL }}
查看完整描述

7 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

太麻烦了。建议使用下反射吧。

NameValueCollection本来就是KV6的格式的 为什么还要转换成HashTable呢?

直接反射 保持键和Model中的属性值相同的就可以了。

查看完整回答
反对 回复 2019-01-21
?
largeQ

TA贡献2039条经验 获得超7个赞

  看了好一会才明白,这个方法蛮不错,谢谢!

查看完整回答
反对 回复 2019-01-21
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

兄弟 帮我问问,这样写有什么弊端
查看完整回答
反对 回复 2019-01-21
?
函数式编程

TA贡献1807条经验 获得超9个赞

这样写,ui层和DAO层耦合度太高啦

查看完整回答
反对 回复 2019-01-21
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

这样 耦合度高的话,会有哪些影响呢?
我能想到的是 当 数据库 加字段 删除字段的时候 可能会 麻烦
还有就是 按照常规的写法,数据库 删除字段 或者添加 字段 基本上 也要改个遍
但是这个 我写了一个 代码生成工具 ,根据数据库 结构生成 的 所以 也不是麻烦
查看完整回答
反对 回复 2019-01-21
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

代码生成工具固然方便。但是它是在项目开始时使用。到了项目迭代时:你不可能通过代码生成工具来大批量生成Code。因为有些业务逻辑是工具无法完成的
查看完整回答
反对 回复 2019-01-21
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

其实技术的应用:就是在你项目中权衡你的需求。
查看完整回答
反对 回复 2019-01-21
  • 7 回答
  • 0 关注
  • 397 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信