ASP .Net MVC,复选框问题!

时间:2009-07-25 11:24:24

标签: asp.net-mvc

基本上我有一组复选框,这些复选框是从视图数据中动态创建的,如下所示:

<input type="checkbox" name="Calendars" value="<%= c.ID %>" /><%= c.Name %>

该值为日历ID。

我可以使用FormsCollection来获取复选框,但是它有效!

(复选框帮助器似乎还有一个错误,它会在复选框旁边显示一个隐藏字段,这意味着true实际上会返回为“true,false”!我可以解决这个问题,因此它不是一个问题,只是想到了ID提到它)

尝试在编辑页面上勾选复选框时出现问题!

我有一个可以有多个日历的日程安排课程,我希望通过在编辑中查看日程表来显示日程安排的日历!

我的视图是强类型的,但MVC魔法无法映射这个!

有什么想法是最好的方法吗?

我曾尝试在ViewData中传递日历ID并执行一些内联​​代码来检查相应的复选框,但这会变得混乱!

谢谢!

更新:

完成此

 s.ID == c.ID)。选择(s =&gt; s).Count()&gt; 0)? “checked = checked”:“”%&gt;

2 个答案:

答案 0 :(得分:3)

您需要手动将“已选中”标记添加到每个复选框:

<input type="checkbox" name="Calendars" value="<%= c.ID %>" checked="checked" /><%= c.Name %>

答案 1 :(得分:2)

您不需要<input type="checkbox" - 使用Html.Checkbox()。它在复选框旁边呈现一个隐藏字段 - 但它不是一个错误。从ASP.NET MVC源代码,InputExtensions.cs,第201行:

// Render an additional <input type="hidden".../> for checkboxes. This
// addresses scenarios where unchecked checkboxes are not sent in the request.
// Sending a hidden input makes it possible to know that the checkbox was present
// on the page when the request was submitted.

使用此:

<%= Html.CheckBox("Calendars", c.ID) %>