2009-10-30 2 views
0

В asp.net MVC-приложении у нас есть механизм, в котором, когда мы отправляем форму, и если есть какие-либо проблемы со значениями (проверка не выполняется), , форма отображается с сохранением старых значений. Как это происходит? Где хранятся эти значения? или они собраны из FormCollection.MVC опубликовано значения

Справка будет рассмотрена.

С уважением Parminder

+0

Привет, parminder. Как вы рождены в indi a punjab – 2009-10-31 14:21:11

+0

У меня ТОЧНО эта же проблема в MVC 4. После исправления недопустимых значений полей и повторной отправки формы FormCollection показывает OLD-значения (от первого submit) вместо текущих значений из второго submit. –

ответ

0

Это действительно зависит от того, как вы настроили свои действия контроллера и ваши взгляды, потому что ASP.NET MVC выглядит в нескольких местах для значений.

Ваше предположение, что он использует FormCollection, является неправильным, так как FormCollection - это то, что ваш контроллер Action принимает как параметр и полностью отделен от вашего представления, где значения фактически отображаются.

В версии 1.0 по умолчанию Изменить шаблон для представлений использует 2-й параметр на большинстве HtmlHelpers, как:

<%=Html.Textbox("Title", Model.ID)%> 

Это будет иметь старое значение извлекается из связанного объекта модели. Поэтому, если вы явно не выполняете проверку и возвращаете объект View (object), значения будут извлекаться из этого объекта. Тем не менее, если вы явно не суметь проверки, как:

if (ModelState.IsValid == false) 
{ 
    return View(); 
} 

Затем код HtmlHelper, вероятно, приведет к ошибке, потому что ни одна модель не была связана.

Если вы полностью уйти от 2-й параметр, как:

<%=Html.Textbox("Title")%> 

значение будет извлечено из почтовых (Request.Form) значений.

+0

Я думаю, вы совершенно неправильно поняли вопрос. Он говорит, что после того, как он загрузит форму, Formcollection ошибочен в контроллере. Вы говорите о представлении здесь, но это не имеет никакого отношения к представлению. –

+0

Он не сказал, что что-то не так, он спрашивал, как старые значения отображаются снова (что отображается на экране). – Langdon

+0

Он сказал, что опубликованная обратная форма поддерживает старые значения, начиная с предыдущего представления. У меня точно такая же проблема. –

0

Один из способов сделать это является использование ModelState.AddModelError

Хороший учебник по MVC Обработка ошибок можно найти here

0

Вы можете сделать это, возвращая вид с ТНА данных

if (ModelState.IsValid == false) 
{ 
return View(X); 
} 

X - данные, которые необходимо вернуть

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

  • Нет связанных вопросов^_^