Параметр действия отмены привязки ASP.NET MVC
-
06-07-2019 - |
Вопрос
Можно ли отключить определенный параметр действия для сохранения его значения в запросах?
[HttpPost]
public ActionResult MyAction(string value1, string value2)
{
if(value1=="hi")
ModelState.AddModelError("value1", "Can't have hi");
//do stuff
if(ModelState.IsValid)
return RedirectToAction("Finish");
else
return View()
}
[HttpGet]
public ActionResult MyAction()
{
return View()
}
Представление состоит из простой формы с двумя полями ввода (значение1 и значение2). После отправки и неудачной проверки представление возвращается. Я хочу, чтобы значение текстового поля в представлении всегда было пустым.
Значение для текстового поля " value1 " сохраняется, если модель признана недействительной.
Я пытался объявить текстовое поле как <% = Html.TextBox (" value1 " ;, null)% > но значение все еще сохраняется. Я также пытался использовать [Bind (Exclude = & Quot; value1 & Quot;)], но это не работает с одной переменной.
Обновление 2:
Я делаю это для текстового поля, которое используется для ввода Captcha (пользовательское решение). Я хочу, чтобы текстовое поле очищалось при каждой загрузке страницы, но я хочу, чтобы проверка оставалась.
Решение
Попробуйте позвонить
ModelState["value1"].Value
= new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture);
перед возвратом представления из действия вашего контроллера.
Это сохраняет все ошибки, связанные с ключом " value1 ", но заменяет значение пустым значением.
Другие советы
Что вы делаете, что заставляет его сохраняться? В MVC нет ничего подобного ViewState, которое сохраняло бы значение в нескольких запросах, если только вы не пишете код или не используете поля формы для этого.
Как выглядит вид? Этот метод действия вызывается через GET или POST? Что такое & "Делать вещи"! содержится в вашем методе?
Edit: вы все еще показываете, // делаете что-то в своем примере кода. Содержит ли этот материал какие-либо ссылки на ViewData? Ваш вопрос о связывании, но я не вижу, чтобы связывание происходило. Может быть, это за пределами моего понимания.
Изменить 2: рад, что Фил видел это! В первоначальном вопросе не упоминалось ModelState.