0

当我被一个非常奇怪的情况阻止时,我目前正在构建一个带有强类型视图的复选框列表。所以这是我的模型视图:

public class QuadroClinicoModelView 
{ 
    public  QuadroClinicoModelView()
    {
        this.check = false;
    }

    public String codigo { set; get; }
    public String nome { set; get; }
    public bool check { set; get; } 
}

我的复选框列表:

public List<QuadroClinicoModelView> quadrosClinicos { set; get; }

然后在我看来:

<tbody>
    @for (var i = 0; i < Model.quadrosClinicos.Count; i++)
    {
        <tr>
            <td>@Html.CheckBoxFor(x => x.quadrosClinicos[i].check)</td>
            <td>
                @Html.HiddenFor(x => x.quadrosClinicos[i].codigo)
                @Model.quadrosClinicos[i].codigo
            </td>

    .
    .
    .
</tbody>

每次我的列表中有超过 2 个复选框时都可以正常工作。但不知何故,当我有 2 个或更少的复选框时,模型视图在我提交表单时不会绑定....

我查看了 Microsoft 所做的奇怪的表单构造,两个不同的输入(隐藏和复选框)具有相同的 name 属性,但是当我使用 html 帮助器构建自定义复选框时,例如:

public static class CheckBoxHelper
{
    public static MvcHtmlString CustomCheckBoxFor(this HtmlHelper htmlHelper, string name, object htmlAttributes)
    {
        string checkBoxWithHidden = htmlHelper.CheckBox(name, htmlAttributes).ToHtmlString().Trim();
        string pureCheckBox = checkBoxWithHidden.Substring(0, checkBoxWithHidden.IndexOf("<input", 1));
        return new MvcHtmlString(pureCheckBox);
    }
    public static MvcHtmlString CustomCheckBoxFor(this HtmlHelper htmlHelper, string name)
    {
        string checkBoxWithHidden = htmlHelper.CheckBox(name).ToHtmlString();
        string pureCheckBox = checkBoxWithHidden.Substring(0, checkBoxWithHidden.IndexOf("<input", 1));
        return new MvcHtmlString(pureCheckBox);
    }
}

请求在那里具有正确的值,而不是“真,假”的情况,但模型视图保留空值。我想避免在模型视图未绑定时从请求中读取值,这是我记得的唯一解决方法。

有人可以帮助我或看到我上面解释的问题吗?

4

0 回答 0