日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在Asp.Net MVC中使用ModelBinding构造Array、List、Collection以及Dictionary

發布時間:2025/3/21 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Asp.Net MVC中使用ModelBinding构造Array、List、Collection以及Dictionary 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在asp.net mvc中,我們可以在html表單中使用特定的格式傳遞參數,從而通過model binder構造一些集合類型。

第一種方式

public ActionResult Infancy(Person[] people) {// ... }

Html表單構造

<input name="people[0].FirstName" type="text" value="神" /> <input name="people[0].LastName" type="text" value="魚" /> <input name="people[1].FirstName" type="text" value="郁悶的" /> <input name="people[1].LastName" type="text" value="PP" /> <input name="people[3].FirstName" type="text" value="重" /> <input name="people[3].LastName" type="text" value="典" />

當其作為一個HTTP POST被提交后的數據大概是這個樣子

people%5B0%5D.FirstName=神&people%5B0%5D.LastName=魚&people%5B1%5D.FirstName=郁悶的&people%5B1%5D.LastName=PP&people%5B3%5D.FirstName=重&people%5B3%5D.LastName=典

那么通過model binder我們將得到這樣的一個people變量的Array集合

people[0].FirstName = "神" people[0].LastName = "魚" people[1].FirstName = "郁悶的" people[1].LastName = "PP" people[3].FirstName = "重" people[3].LastName = "典"

這樣就和我們在代碼中顯式的構建如下集合是一樣的

people = new Person[] {new Person() { FirstName = "神", LastName = "魚" },new Person() { FirstName = "郁悶的", LastName = "PP" } ?

這里會按照parameterName[index].PropertyName的規則來解析屬性。其中,索引必須是連續的且以0開始的正整數。在上面的例子中由于沒有people[2],所以”重典”將不會被解析。

第二種方式

public ActionResult Infancy(IDictionary<string, Information> people){// ...} ?

Html表單構造

<input type="text" name="people[0].Key" value="forever" /> <input type="text" name="people[0].Value.Age" value="12" /> <input type="text" name="people[0].Value.Gender" value="純爺們" /> <input type="text" name="people[1].Key" value="郁悶的PP" /> <input type="text" name="people[1].Value.Age" value="50" /> <input type="text" name="people[1].Value.Gender" value="不好說" />

那么通過model binder我們將得到這樣的一個people鍵值集合:

people[0].Key = "forever" people[0].Value.Age = 12 people[0].Value.Gender = "純爺們" people[1].Key = "郁悶的PP" people[1].Value.Age = 50 people[1].Value.Gender = "不好說"

如同我們在代碼中這樣構造:

var people = new Dictionary<string, Information>() { { "forever", new Information() { Age = 12, Gender = "純爺們" } }, { "郁悶的PP", new Information() { Age = 50, Gender = "不好說" } } };

這里解析key的方式是尋找parameterName[index].Key這樣的結構、解析value的方式是尋找parameterName[index].Value這樣的結構。如果key或者value是復雜類型(如上面例子中的Information類型),則parameterName[index].Key或parameterName[index].value將被視為前綴(也可以理解為某個類型)而.PropertyName被視為后綴(即某個屬性)。這里的索引也要求必須是以0開始的不間斷的正整數。否則斷開以后的部分將不會被解析。

構建IEnumerable<T>, ICollection<T>, IList<T>, T[], Collection<T>, 以及 List<T>這類集合類型需要使用第一種語法。
而構建IDictionary<TKey, TValue> 和 Dictionary<TKey, TValue>這類集合需要使用第二種語法。

如果你不喜歡這種方式,你完全可以在Asp.net mvc中自定義一些binder來處理特定的類型。或者直接使用FormCollection。

更多IT相關的文章,歡迎光臨我的個人網站:http://www.zuowenjun.cn/

總結

以上是生活随笔為你收集整理的在Asp.Net MVC中使用ModelBinding构造Array、List、Collection以及Dictionary的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。