【发布时间】:2013-06-26 10:40:15
【问题描述】:
我陷入了一个奇怪的问题。
我的 MVC 视图中有一个复选框,它是从 jQuery 呈现的。
<div>
<label for="check" class="chk">
Del ?
<input id="IsSoftDeleted" name="IsSoftDeleted" data-val-required="The Del? field is required." data-val="true" type="checkbox" class="check" />
</label>
</div>
脚本的编写方式是选中和未选中的值是打开和关闭。
我在我的 bodel binder 中按如下方式处理它:
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
{
bool softDelete = Convert.ToBoolean(bindingContext.ValueProvider.GetValue("IsSoftDeleted").AttemptedValue != null
&& bindingContext.ValueProvider.GetValue("IsSoftDeleted").AttemptedValue == "on" ? "true" : "false");
return OrgFactory.Create(bindingContext.ValueProvider.GetValue("Caption").AttemptedValue,
bindingContext.ValueProvider.GetValue("NameInUse").AttemptedValue,
bindingContext.ValueProvider.GetValue("Description").AttemptedValue,
softDelete, new Party());
}
这很好用,组织的 IsSoftDeleted 属性现在是 true 或 false。
但是,自从我的模型类中的布尔值 IsSoftDeleted 以来,ModelState 指的是尝试值,即 on 并且 ModelState 变为 false。
我尝试将值设置为 AttemptedValue 属性,但无法访问。
有人可以建议我如何解决它吗?
【问题讨论】:
标签: c#-4.0 asp.net-mvc-4