Asp.net mvc 2 MVC2复选框:仍有问题;或者:这跟我有什么关系?

Asp.net mvc 2 MVC2复选框:仍有问题;或者:这跟我有什么关系?,asp.net-mvc-2,checkbox,Asp.net Mvc 2,Checkbox,在我创建和编辑表单的过程中,失败越来越严重,我仍然无法通过Html.Checkbox()生成复选框。我不确定现在是否应该手动编写HTML 我有一个视图模型: public class AdminGameReviewViewModel { public Game GameData { get; set; } public List<Genre> AllGenres { get; set; } public List<PlatformListing>

在我创建和编辑表单的过程中,失败越来越严重,我仍然无法通过Html.Checkbox()生成复选框。我不确定现在是否应该手动编写HTML

我有一个视图模型:

public class AdminGameReviewViewModel
{
    public Game GameData { get; set; }
    public List<Genre> AllGenres { get; set; }
    public List<PlatformListing> AllPlatforms { get; set; }
}
我试图生成如下复选框:

<%: Html.Label("Platforms") %><br />
<% Model.AllPlatforms.ForEach(p => Html.Encode(Html.CheckBox("PlatformIDs", p.IsSelected, new { value = p.Platform.PlatformID }))); %>

Encode(Html.CheckBox(“PlatformIDs”,p.IsSelected,new{value=p.PlatformID}));%>
但是,它们根本没有显示出来

我很好奇为什么我需要为复选框本身提供布尔值。我认为它将简单地返回检查过的值,作为一个数组或列表,类似于PHP的$u POST。所以,我不确定我是否正确地实现了我的布尔属性,以及我犯的任何其他脑死错误。布尔值迫使我将要显示/绑定的数据隐藏得比我希望的更远,这让我很难“看到”我做错了什么

我一直觉得我对自己的问题看得太深了,并试图使解决方案比应该的更复杂。考虑到我在MVC2/C方面的经验不足,我只是不知道该怎么办。这似乎是表单处理中被大多数演示和教程掩盖或完全忽略的一部分,这并没有帮助


因此,再次感谢您的帮助。

问题是您没有向响应流写入任何内容

Html.Checkbox()返回一个字符串,它不会直接写入响应对象(Html.Encode()-也不会直接转义保留字符并返回结果字符串)。最重要的是,ForEach扩展方法只执行一个操作,不返回值

因此,您必须放弃ForEach扩展,并使用or代码块:

<% foreach (var p in Model.AllPlatforms) { %>
   <%= Html.CheckBox("PlatformIDs", p.IsSelected, new { value = p.Platform.PlatformID }) %>
<% } %>

<% foreach (var p in Model.AllPlatforms) { %>
   <%= Html.CheckBox("PlatformIDs", p.IsSelected, new { value = p.Platform.PlatformID }) %>
<% } %>