ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中_.Net教程
推薦:ASP.NET中的Cache使用介紹這篇文章主要介紹了ASP.NET中的Cache使用介紹,本文講解了Cache 是怎么工作的、Cache 怎么創(chuàng)建及怎么銷(xiāo)毀、什么時(shí)候用cache、cache 調(diào)用注意事項(xiàng)等內(nèi)容,需要的朋友可以參考下 Cache 即高速緩存 ,我想非常多人對(duì)他的第一印象一定像我相同,感覺(jué)他一定能提高系統(tǒng)得性能和
這篇文章主要介紹了ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中,本文模仿MVC模式中的自動(dòng)映射表單了模型,使用泛型和反射實(shí)現(xiàn),需要的朋友可以參考下
我們知道ASP.NET MVC有個(gè)強(qiáng)大的地方就是Form表單提交到action的時(shí)候,可以直接將Form的參數(shù)直接裝配到action的參數(shù)實(shí)體對(duì)象中
比如
代碼如下:
action方法 Register(UserModel userModel)
{
.............................
}
在提交表單的時(shí)候,會(huì)自動(dòng)講表單里面的字段封裝到對(duì)應(yīng)的UserModel字段里面
那么 WebForm里面可不可以也紫將呢?
因?yàn)槊看味家カ@得數(shù)據(jù),優(yōu)秀的程序員應(yīng)該要學(xué)會(huì)代碼封裝,代碼復(fù)用,重復(fù)的工作不要做
我們其實(shí)可以利用反射來(lái)實(shí)例化對(duì)象的(自動(dòng)裝配)
好了廢話不多....
pageload里面很簡(jiǎn)單了
代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPost())
{
InitPage();//第一次訪問(wèn)呈現(xiàn)頁(yè)面
}
else
{
UserModel userModel = AssembleModel
}
}
關(guān)鍵就是基類(lèi)里面的AssembleModel 方法了
基類(lèi)里面
我們首先獲取到上下文的參數(shù) IT404
代碼如下:
protected NameValueCollection valueCollection = HttpContext.Current.Request.Params;
基類(lèi)很簡(jiǎn)單,就是將上下文的提交的參數(shù)存放到valueCollection
然后再看AssembleModel方法了,這是一個(gè)泛型方法
代碼如下:
///
/// 反射獲取類(lèi)的屬性 ///
///
///
protected PropertyInfo[] GetPropertyInfoArray(Type type)
{
PropertyInfo[] props = null;
try
{
object obj = Activator.CreateInstance(type);
props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
}
catch (Exception ex)
{
}
return props;
}
///
/// 根據(jù)NameValueCollection 自動(dòng)裝配 ///
///
///
///
protected T AssembleModel
{
PropertyInfo[] propertyInfoList = GetPropertyInfoArray(typeof(T));
object obj = Activator.CreateInstance(typeof(T), null);//創(chuàng)建指定類(lèi)型實(shí)例
foreach (string key in valueCollection.Keys)//所有上下文的值
{
foreach (var PropertyInfo in propertyInfoList)//所有實(shí)體屬性
{
if (key.ToLower() == PropertyInfo.Name.ToLower())
{
PropertyInfo.SetValue(obj, valueCollection[key], null);//給對(duì)象賦值
}
}
}
return (T)obj;
}
很簡(jiǎn)單,就是遍歷參數(shù),然后用反射遍歷出實(shí)體類(lèi)的共有屬性,然后根據(jù)名字name來(lái)匹配和賦值
所以以后我們只需要一句代碼 就能自動(dòng)裝配上從客戶(hù)端存過(guò)來(lái)的值了
代碼如下:
UserModel userModel = AssembleModel
分享:ASP.NET OutputCache詳解這篇文章主要介紹了ASP.NET OutputCache詳解,本文詳細(xì)講解了OutputCache的語(yǔ)法、OutputCache的參數(shù)、OutputCache使用示例等內(nèi)容,需要的朋友可以參考下 當(dāng)用戶(hù)訪問(wèn)頁(yè)面時(shí),整個(gè)頁(yè)面將會(huì)被服務(wù)器保存在內(nèi)存中,這樣就對(duì)頁(yè)面進(jìn)行了緩存。當(dāng)用戶(hù)再次訪問(wèn)該頁(yè),頁(yè)面不會(huì)再次
- 仿vs實(shí)現(xiàn)WPF好看的進(jìn)度條
- ASP.NET使用gridview獲取當(dāng)前行的索引值
- ASP.NET檢測(cè)到不安全 Request.Form 值解決方案匯總
- asp.net開(kāi)發(fā)微信公眾平臺(tái)之驗(yàn)證消息的真實(shí)性
- asp.net開(kāi)發(fā)微信公眾平臺(tái)之獲取用戶(hù)消息并解決
- ASP.NET中CKEditor與CKFinder的配置使用
- javascript操作ASP.NET服務(wù)器控件
- 使用Lucene.NET實(shí)現(xiàn)站內(nèi)搜索
- ASP.NET中集成百度編輯器UEditor
- asp.net實(shí)現(xiàn)文件無(wú)刷新上傳方法匯總
- ASP.Net刷新頁(yè)面后自動(dòng)滾動(dòng)到原來(lái)位置方法匯總
- 支持ASP.NET MVC、WebFroM的表單驗(yàn)證框架ValidationSuar使用介紹
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- ASP.NET 2.0當(dāng)中的Call Back機(jī)制
- 使用asp.net的pageDataSource中時(shí)索引問(wèn)題解決方法
- 如何使ASP.NET 避免頁(yè)面重新整理時(shí)重復(fù)送出
- Web.config 和 App.config 的區(qū)別分析
- Ajax實(shí)現(xiàn)評(píng)論中頂和踩功能的實(shí)例代碼
- 編程使用資源文件實(shí)現(xiàn)多語(yǔ)言頁(yè)面(In Action)
- ASP.NET如何應(yīng)用XML技術(shù)實(shí)現(xiàn)Web報(bào)表打印
- 如何在.NET環(huán)境下為網(wǎng)站增加IP過(guò)濾功能
- C#使用Panel實(shí)現(xiàn)窗體動(dòng)態(tài)側(cè)邊欄
- asp.net搜索關(guān)鍵詞高亮顯示函數(shù)
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中
- 教程說(shuō)明:
.Net教程-ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中
。