簡體   English   中英

ASP.NET MVC模型綁定到列表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM