ASP.NET: как сделать флажок всегда снятым, даже после отправки - PullRequest
0 голосов
/ 03 декабря 2010

Только что начал изучать, как разрабатывать приложение ASP.NET, я озадачен тем, как сделать флажок всегда снятым, даже после отправки формы, где пользователь ставит флажок.Этот флажок предназначен для подтверждения того, что пользователь согласен с правилами и условиями ... и когда отправка формы возвращает некоторые ошибки, я хочу отобразить сообщение об ошибке на экране и оставить флажок снятым, независимо от того, отмечен он или нет.

На мой взгляд, у меня есть следующее:

<%: Html.CheckBoxFor(m => m.UserAgreement) %>

И я попробовал оба следующих в моем контроллере, и ни один из них не работает:

ViewData["UserAgreement"] = false;

return View(new MyModel { UserAgreement = false});

Любой может помочь в достиженииЧто мне нужно?Спасибо.

Ответы [ 4 ]

1 голос
/ 31 октября 2012

Это беспокоило меня и долгое время, даже простота, установив значения в моей модели на false, на самом деле не решила эту проблему. Я обнаружил, что он также проверял значение в коллекции ModelState.

Возможно, это не самое чистое решение, но в конечном итоге это сработало для меня:

private ActionResult DisplayView(string viewName, MyModelClass model)
{
    model.AgreeTerms = false;
    ModelState.Remove("AgreeTerms");

    return View(viewName, model);
}
0 голосов
/ 03 декабря 2010

Ваше значение сохраняется в свойстве ModelState.Для того, чтобы сбросить значение после поста.Вы должны очистить значение в свойстве ModelState

0 голосов
/ 10 января 2012

Попробуйте ModelState.Remove("UserAgreement"); перед возвратом.

0 голосов
/ 03 декабря 2010

ASP.NET MVC CheckBox не сохраняет свое состояние, если вы специально не попросите его сделать это.

Код, который вы разместили выше, указывает, что «UserAgreement» следует проверять (значение равно TRUE) при возврате представления, а не то, что оно не должно быть проверено.UserAgreement на «true» перед возвратом представления пользователю, флажок будет снят.Точно так же, если ваше действие получает модель со свойством UserAgreement, установленным в значение «true», и вы не установите для него значение «false», прежде чем возвращать его в представление, флажок останется отмеченным.

...