![](/img/trans.png)
[英]Model Binding To List Of Objects In ASP.NET MVC with RadioButton
[英]ASP.NET MVC Model Binding into a List
在我的ASP.NET MVC站點中,功能的一部分允許用戶輸入某個場所打開時的小時數。
我決定將這些小時存儲在我的數據庫中的VenueHours表中,與Venues表的FK-PK關系,以及DayOfWeek,OpeningTime和ClosingTime參數。
在我的視圖中,我想讓用戶只輸入他們所知道的時間; 換句話說,有些日子可能沒有為場地填寫。 我正在考慮創建一個復選框,用戶可以檢查該復選框以啟用復選框所屬的DayOfWeek的OpeningTime和ClosingTime字段。
我的問題涉及如何將此信息傳遞給我的HttpPost控制器操作 。
我知道可以傳遞的最大天數(7),我當然可以在我的Action中編寫7個可以為空的VenueHour參數,但我確信有更好的方法。
我可以以某種方式將視圖信息綁定到傳遞給我的Action的List嗎? 如果遇到用戶可以填寫的信息數量沒有限制的情況,這對我也有幫助。
Scott Hanselman發表了一篇非常好的文章,講述了默認模型綁定器如何處理集合,數組和字典。 如果您不想編寫自定義模型綁定器,那就太棒了,盡管編寫自定義模型綁定器並不是什么大問題。
請嘗試以下步驟
1 - 將所有輸入框(可以由DatePicker JQuery控件填充) 放在 aspx視圖中的div內 。
2 - 使用Jquery選擇器將需要發布到Action方法的所有值(在上面指定的DIV中)捕獲到客戶端的JavaScript數組中。
請參閱DIV中的過濾輸入元素
var enteredVenueHours = new Array();
for(var i=0;i < inputsInsideDiv.length;i++)
{
// add the elements to the JS array
}
3 - 使用Jquery帖子將enteredVenueHours發送回控制器操作**
$.post('<%=Url.Action("ActionMethod")%>',{ EnteredVenueHours: enteredVenueHours,function (data)
{
// Udpate status to be displayed here.
});
4 - 確保Controller操作方法具有以下簽名
[AcceptVerbs(HTTP.Post)]
public ActionResult ActionMethod(List<string> EnteredVenueHours)
{
// Have the DB persistance logic .
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.