ASP.NET MVC模型绑定到列表中
在我的ASP.NET MVC网站中,功能的一部分允许用户输入某个场地打开时的小时数。ASP.NET MVC模型绑定到列表中
我决定将这些小时存储在我的数据库中的VenueHours表中,并将FK-PK关系存储到Venues表以及DayOfWeek,OpeningTime和ClosingTime参数中。
在我的视图中,我想让用户只输入他们知道的时间;换句话说,一些日子可能不会被填入一个场地。我正在考虑创建复选框,用户可以选中此复选框以启用复选框所属的DayOfWeek的OpeningTime和ClosingTime字段。
我的问题涉及到如何将此信息传递给我的HttpPost控制器操作。我知道可以在(7)中传递的最大天数,我当然可以在我的Action中写入7个可以为空的VenueHour参数,但我相信有更好的方法。
我能不知何故将视图信息绑定到传递给我的操作的列表中?这也将帮助我,如果我碰到的情况下,用户可以填写多少信息没有限制。
Scott Hanselman发布了一个very good article关于默认模型绑定器如何处理集合,数组和字典。如果您不想编写自定义模型绑定器,这很好,但编写自定义模型绑定器并不是什么大不了的事情。
请尝试以下步骤
1 - 在ASPX视图一个div内将所有的输入框(其可通过的DatePicker JQuery的控制来填充)。
2 - 使用Jquery选择器将需要发布到Action方法的所有值(在上面指定的DIV中)捕获到客户端的JavaScript数组中。
请参阅Filtering input elements inside 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 - 确保控制器的操作方法具有以下签名
[AcceptVerbs(HTTP.Post)]
public ActionResult ActionMethod(List<string> EnteredVenueHours)
{
// Have the DB persistance logic .
}
太棒了!将尝试使用此。 – 2010-06-17 03:41:08
另外,是否可以使用[Bind(Exclude =“...”)]]属性不绑定列表中每个对象内的一些参数? – 2010-06-17 03:42:14