Мой Index.cshtmlMVC модель пропуск для просмотра
@model ReportGenerator.WebUI.Models.ReportViewModel
@Html.TextBoxFor(m => m.report.FileName, new { @class = "form-control", id = "FileName" })
Мой контроллер
public ActionResult Index(ReportViewModel model)
{
...some stuff
model.report = new Report();
model.report.FileName = "INDEX";
return View(model);
}
public ActionResult fillFields(ReportViewModel _model)
{
...some stuff
_model.report = new Report();
_model.report.FileName = "FILL";
return View("Index", _model);
}
Когда я запускаю мое приложение свойство TextBox
Text
установлено значение "INDEX". Также, когда я нажимаю кнопку, которая вызывает действие контроллера fillFields
, TextBox
все еще отображает «ИНДЕКС», он не меняется на «ЗАПОЛНИТЬ».
Что я делаю неправильно? Почему он не хочет работать?
Ваш плохой поступок. Ваш метод 'fillFields()' имеет параметр 'ReportViewModel', поэтому его значения добавляются в' ModelState', когда метод инициализируется. Когда вы возвращаете представление, ваш метод TextBoxFor() 'использует значение из ModelState (а не свойство модели) для установки значения текстового поля. Причина этого объясняется [здесь] (http://stackoverflow.com/questions/26654862/textboxfor-displaying-initial-value-not-the-value-updated-from-code/26664111#26664111). Правильный подход - следовать шаблону PRG. –
Спасибо! Я использовал ModelState.Clear(); и он работает – Icet
Не используйте 'ModelState.Clear()'. Следуйте шаблону PRG и перенаправляйте! –