Dot-Net
使用自定義模型綁定器綁定非順序列表
我知道如果我想將非順序元素綁定到 MVC 中的列表,我可以使用此處
Index描述的語法。但是,我無法獲得遠端驗證來處理這個(使用
Remote屬性)。例如,如果我有這樣的模型:
public class AddUsers { public List<User> Users { get; set; } public string Comment { get; set; } } public class User { [Remote("UsernameAvailable", "User")] public string Name { get; set; } }然後假設在我看來我有以下內容(為了清楚起見,我故意省略了我正在使用的 Html 助手):
<input type="hidden" name="Users.Index" value="foo" /> <input type="text" name="Users[foo].Name" /> <input type="hidden" name="Users.Index" value="bar" /> <input type="text" name="Users[bar].Name" />在表單文章中,該
Index欄位隨順,這有助於模型綁定器很好地綁定所有內容,例如:Comment=bla&Users.Index=foo&Users[foo].Name=john&Users.Index=bar&Users[bar].Name=bob但是當遠端驗證觸發時,只有這個被發送到我的操作(兩個單獨的請求,每個被驗證的項目一個):
Users[foo].Name=john Users[bar].Name=bob沒有
Index,模型綁定器不知道如何處理它。它既不能綁定到 aUser、 aList<User>或 aAddUser。這讓我想到了我的問題。
有沒有辦法編寫一個自定義模型綁定器,可以處理非順序列表而無需使用
Index符號?我必須承認,我很難理解為什麼這個Index符號是必要的(也許作為某種優化除外)。我正在使用 MVC 4 和 .NET 4.5。
**注意:**我以前從來沒有弄亂過自定義模型綁定器,所以我真的只是在尋找一些關於它是否可能(或只是一個死胡同)的一般指導,以及一些入門指南。
我能夠通過調整這個答案中的解決方案來解決我的問題– Eric 2013-03-22 22:28:07