当我被一个非常奇怪的情况阻止时,我目前正在构建一个带有强类型视图的复选框列表。所以这是我的模型视图:
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);
}
}
请求在那里具有正确的值,而不是“真,假”的情况,但模型视图保留空值。我想避免在模型视图未绑定时从请求中读取值,这是我记得的唯一解决方法。
有人可以帮助我或看到我上面解释的问题吗?