MVC генерирует два поля ввода для одного и того же свойства bool.Как мне это остановить? - PullRequest
2 голосов
/ 09 февраля 2010

C #, MVC 2 RC 2 ...

В моем классе модели есть следующее свойство:

[Required]
[DataType(DataType.Custom)]
[DisplayName("Show Favourites")]
public bool ShowFavourites { get; set; }

И следующий HTML в представлении ASPX:

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

Очевидно, проблема в том, что два поля ввода (в частности, скрытое поле) с одним и тем же атрибутом имени, но как мне остановить это при этом? За исключением кода в методе действия, это весь сгенерированный код в среде IDE. Помещение точки отладки в код действия показывает, что значение Request.Params ["ShowFavourites"], конечно, "true, false".

Спасибо

Мт.

1 Ответ

2 голосов
/ 09 февраля 2010

Вы случайно используете поставщика связывателей моделей или метаданных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...