5

在我的 ASP.NET MVC 站点中,部分功能允许用户输入某个场所开放的时间。

我决定将这些时间存储在我的数据库中的 VenueHours 表中,并具有与 Venues 表的 FK 到 PK 关系,以及 DayOfWeek、OpeningTime 和 ClosingTime 参数。

在我看来,我想让用户只输入他们知道的时间;换句话说,有些日子可能无法填写场地。我正在考虑创建复选框,用户可以检查该复选框以启用复选框所属的 DayOfWeek 的 OpeningTime 和 ClosingTime 字段。


我的问题涉及如何将此信息传递给我的 HttpPost Controller Action

因为我知道可以传入 (7) 的最大天数,我当然可以将 7 个可为空的 VenueHour 参数写入我的 Action,但我确信有更好的方法。

我可以以某种方式将 View 信息绑定到传递给我的 Action 的 List 中吗?如果我遇到用户可以填写多少信息没有限制的情况,这也会对我有所帮助。

4

2 回答 2

13

Scott Hanselman 发表了一篇非常好的文章,介绍了默认模型绑定器如何处理集合、数组和字典。如果您不想编写自定义模型绑定器,那就太好了,尽管编写自定义模型绑定器并不是什么大不了的事。

于 2010-06-17T03:11:51.453 回答
1

请尝试以下步骤

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 帖子将输入的VenueHours 发送回控制器操作**

$.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-17T05:24:12.600 回答