2015-09-26 2 views
3

Я работаю над приложением ASP.NET MVC. Модель для моей формы выглядит так:Получение значения флажка в действии ASP.NET MVC

public class ViewModel 
{ 
    public bool IsActive { get; set; } 
} 

В моей форме у меня есть следующий HTML-код.

<label class="checkbox pull-left"> 
    <input type="checkbox" id="IsActive" name="IsActive" data-val="true" data-val-required="The IsActive field is required."> 
    <i></i>Active/Deactive 
    <input name="IsActive" type="hidden"> 
</label> 

Когда я отправляю форму, значение IsActive в модели всегда неверно. Однако свойство Name в модели имеет значение. Я проверил это, установив точку останова следующим образом:

[HttpPost] 
public ActionResult MyAction(ViewModel model) 
{ 
    // model.IsActive always is false 
} 

Почему не установлено значение Checkbox?

Что мне делать, чтобы исправить это?

ответ

5

Вы не устанавливаете атрибут value либо в установленном флажке, либо в соответствующем скрытом вводе, поэтому ни одно значение не отправляется, а значение вашего свойства является значением по умолчанию (false). Она должна быть

<label class="checkbox pull-left"> 
    <input type="checkbox" id="IsActive" name="IsActive" value="true" ....> 
    <i></i>Active/Deactive 
    <input name="IsActive" type="hidden" value="false"> 
</label> 

Примечание стороны: Есть ли какой-либо причине вы не используете @Html.CheckBoxFor(m => m.IsActive), чтобы сгенерировать корректный HTML?

1

Вы должны установить значение attr для выбора значения.

данных Допустимы разные, и не используется в качестве значения ATTR в любом HTML или MVC

0

Я предлагаю вам использовать бритву и @Html.CheckBoxFor(m => m.IsActive).

+1

Обычно лучше проработать ответ в первой попытке, или ОП попросит вас об этом позже ... – displayName

Смежные вопросы