我正在构建一个带有强类型视图的复选框列表,当时我被一个非常奇怪的情况所阻止。 所以有我的模型观点:
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个或更少的复选框时,模型视图在我提交表单时不会绑定....
我查看Microsoft所做的奇怪的表单构造,使用具有相同名称属性的两个不同输入(隐藏和复选框),但是当我使用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);
}
}
请求具有正确的值而不是&#34; true,false&#34;情况,但模型视图保持空值。 我想避免在模型视图未绑定时从请求中读取值,这是我记得的唯一解决方法。
有人可以帮助我或看到像我上面解释过的问题吗?