C# MVC Html.CheckBoxFor 不绑定(bind)到模型

标签 c# asp.net-mvc checkbox

我遇到了一个令人沮丧的问题,当回发到 Controller 时,我似乎无法让模型绑定(bind)与 CheckBoxFor 一起使用。我的模型只是返回 null。任何帮助将不胜感激!

查看

@model IEnumerable<FFR.Context.Matchup>

@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>View1</title>
</head>
<body>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm(Html.BeginForm("Submit", "Matchups", FormMethod.Post)))
{
    @foreach (var item in Model) {
    <tr>
        <td>@Html.CheckBoxFor(modelItem => item.isChecked)</td>

        <td>
            @Html.DisplayFor(modelItem => item.MatchupDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Spread)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.HomeScore)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.AwayScore)
        </td>
    }

    <tr><td><input type="submit" value="Submit" /></td></tr>

</table>
}
</body>
</html>

Controller

[HttpPost]
public ActionResult Submit(IEnumerable<Matchup> model)
{

        //processing

}

型号

public partial class Matchup
{
    public Matchup()
    {
        this.Bets = new HashSet<Bet>();
    }

    public int MatchupId { get; set; }
    public int HomeTeamId { get; set; }
    public int AwayTeamId { get; set; }
    public int LocationId { get; set; }
    public System.DateTime MatchupDate { get; set; }
    public int WeekId { get; set; }
    public int SeasonId { get; set; }
    public Nullable<decimal> Spread { get; set; }
    public Nullable<decimal> HomeScore { get; set; }
    public Nullable<decimal> AwayScore { get; set; }
    public string TimeLeft { get; set; }
    public Nullable<System.DateTime> LastUpdate { get; set; }
    public Boolean isChecked { get; set; }
}

最佳答案

您需要使用 for循环,以便您的控件使用索引器正确命名。将模型更改为 @model IList<FFR.Context.Matchup>然后在 View 中

for(int i = 0; i < Model.Count; i++)
{
  @Html.CheckBoxFor(m => m[i].isChecked)
  ....
}

如果您无法使用IList那么你可以使用自定义EditorTemplate对于您的模型( refer this example )

旁注:为什么要使用Layout = null;并渲染head在 View 中(而不是指定布局)?

关于C# MVC Html.CheckBoxFor 不绑定(bind)到模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080587/

相关文章:

c# - 如何使用 C# 加密的 Crypto++ 解密文件

c# - 从文本文件中读取一行并解释它所在的字符?

asp.net-mvc - Entity Framework 6.2 首次启动非常慢并且 EFInteractiveViews

asp.net-mvc - vscode上如何引用其他项目的dll

c# - 在 ASP.NET 应用程序上以编程方式配置 Microsoft.IdentityModel 不起作用 - 被动重定向已启用但从未起作用

jquery - 如何覆盖 jquery 的 .serialize 以包含未选中的复选框

c# - 使用根对象属性中的大量数据解析大型 JSON 文件

c# - 无法对 View 中的空引用执行运行时绑定(bind)

android - 如果选中一个特定的复选框,则执行某些操作,如果单击任何其他复选框,则执行其他操作

javascript - 复选框默认选中状态问题