MVC为同一个bool属性生成两个输入字段。我怎么阻止它?

时间:2010-02-09 14:39:16

标签: c# asp.net-mvc

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”。

谢谢,

1 个答案:

答案 0 :(得分:2)

您是否有机会使用自定义模型绑定器或元数据提供程序?