C#,MVC 2 RC 2 ...
我的模型类上有以下属性:
[Required]
[DataType(DataType.Custom)]
[DisplayName("Show Favourites")]
public bool ShowFavourites { get; set; }
视图ASPX中的以下HTML:
<div class="editor-label">
<%= Html.LabelFor(model => model.ShowFavourites) %>
</div>
<div class="editor-field">
<%= Html.CheckBoxFor(model => model.ShowFavourites) %>
<%= Html.ValidationMessageFor(model => model.ShowFavourites) %>
</div>
我在行动中做了以下事情:
MyModel model = new MyModel();
if (ModelState.IsValid)
bool success = TryUpdateModel(model);
虽然成功值为true,但不更新模型对象。我在浏览器中查看了呈现的HTML,并显示:
<div class="editor-label">
<label for="ShowFavourites">Show Favourites</label>
</div>
<div class="editor-field">
<input id="ShowFavourites" name="ShowFavourites" type="checkbox" value="true" />
<input name="ShowFavourites" type="hidden" value="false" />
</div>
显然,问题是具有相同名称属性的两个输入字段(特别是隐藏字段),但是如何阻止它执行此操作?除了action方法中的代码之外,这都是IDE生成的代码。在操作代码中添加调试点会显示Request.Params [“ShowFavourites”]值当然是“true,false”。
谢谢,
太
答案 0 :(得分:2)
您是否有机会使用自定义模型绑定器或元数据提供程序?