Параметр действия отмены привязки ASP.NET MVC - PullRequest
0 голосов
/ 27 октября 2009

Можно ли отключить определенный параметр действия для сохранения его значения в запросах?

[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). После отправки и неудачной проверки представление возвращается. Я хочу, чтобы значение текстового поля всегда было пустым.

Значение для текстового поля «значение1» сохраняется, если модель признана недействительной.

Я попытался объявить текстовое поле как <% = Html.TextBox ("value1", null)%>, но значение все еще сохраняется. Я также пытался использовать [Bind (Exclude = "value1")], но это не работает с одной переменной.

Обновление 2:

Я делаю это для текстового поля, которое используется для ввода Captcha (пользовательское решение). Я хочу, чтобы текстовое поле очищалось при каждой загрузке страницы, но я хочу, чтобы проверка оставалась.

Ответы [ 2 ]

4 голосов
/ 29 октября 2009

Попробуйте позвонить

ModelState["value1"].Value 
  = new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture);

перед возвратом вида из действия вашего контроллера.

Это сохраняет все ошибки, связанные с ключом «value1», но заменяет значение пустым.

2 голосов
/ 27 октября 2009

Что вы делаете, что заставляет его быть сохраненным? В MVC нет ничего подобного ViewState, которое сохраняло бы значение в нескольких запросах, если только вы не пишете код или не используете поля формы для этого.

Как выглядит вид? Этот метод действия вызывается через GET или POST? Что такое «делать вещи», содержащиеся в вашем методе?

Редактировать: Вы все еще показываете, // делаете вещи в своем примере кода. Содержит ли этот материал какие-либо ссылки на ViewData? Ваш вопрос о связывании, но я не вижу, чтобы связывание происходило. Может быть, это за пределами моего понимания.

Редактировать 2: Рад, что Фил видел это! Оригинальный вопрос не упоминал ModelState.

...