gpt4 book ai didi

asp.net-mvc-2 - MVC2 复选框 : Still having problems; Or: What does isSelected got to do with it?

转载 作者:行者123 更新时间:2023-12-04 06:41:41 24 4
gpt4 key购买 nike

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

我有一个 View 模型:

public class AdminGameReviewViewModel
{
public Game GameData { get; set; }
public List<Genre> AllGenres { get; set; }
public List<PlatformListing> AllPlatforms { get; set; }
}

还有一个辅助模型:
public class PlatformListing
{
public Platform Platform { get; set; }
public bool IsSelected { get; set; }
}

而且,我正在尝试像这样生成复选框:
<%: Html.Label("Platforms") %><br />
<% Model.AllPlatforms.ForEach(p => Html.Encode(Html.CheckBox("PlatformIDs", p.IsSelected, new { value = p.Platform.PlatformID }))); %>

但是,它们根本没有显示。

我很好奇为什么我需要为复选框本身提供一个 bool 值。我认为它会简单地将检查值作为类似于 PHP 的 $_POST 的数组或列表发送回。所以,除了我犯的任何其他脑死亡错误之外,我不确定我是否正确地实现了我的 bool 属性。 bool 值迫使我将要显示/绑定(bind)的数据比我想要的更深,这给我“看到”我做错了什么带来了问题。

我一直觉得我对自己的问题看得太深了,并试图使解决方案变得比应有的复杂。鉴于我对 MVC2/C# 缺乏经验,我只是不确定从这里去哪里。这似乎是表单处理的一部分,被大多数演示和教程忽略或完全忽略,这无济于事。

所以,再次,任何帮助将不胜感激。

最佳答案

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

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

所以你必须放弃 ForEach 扩展,并使用 <%= %> 或 <%: %> 代码块:

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

关于asp.net-mvc-2 - MVC2 复选框 : Still having problems; Or: What does isSelected got to do with it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com