2009-10-30 45 views
0

在asp.net MVC應用程序中,我們有一種機制,其中當我們提交 表單並且如果有任何問題(值驗證失敗), 表單將顯示回保留舊值。它是如何發生的? 這些值保存在哪裏?或者他們從FormCollection收集。MVC發佈的值

幫助將被批准。

問候 成員Parminder

+0

你好parminder你好,你是怎麼生在indi一個旁遮普人 – 2009-10-31 14:21:11

+0

我在MVC 4中有完全相同的問題。糾正無效的字段值並重新提交表單後,FormCollection顯示的是舊的值(來自第一次提交),而不是第二次提交的當前值。 – 2013-10-04 14:06:14

回答

0

這真的取決於你如何設置你的控制器動作,你的意見,因爲ASP.NET MVC看起來在多個地方的價值觀。

你假設它使用FormCollection是錯誤的,因爲FormCollection是你的控制器Action作爲一個參數引入的東西,它完全獨立於你的View,其中的值實際上最終被顯示。

在1.0,默認情況下,對視圖編輯模板使用上大部分HtmlHelpers的第二個參數,如:

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

這將對從綁定模型對象拉到舊值。因此,如果您顯式驗證失敗並返回View(對象),則將從該對象中提取值。不過,如果你明確地驗證失敗,如:

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

隨後的HtmlHelper代碼很可能會導致一個錯誤,因爲沒有模型的約束。

如果完全離開過第二個參數,如:

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

該值將從後(的Request.Form)值來拉動。

+0

我想你完全誤解了這個問題。他說他上傳表格後,Formcollection在控制器中是錯誤的。你在這裏談論這個觀點,但這與這個觀點無關。 – 2013-10-04 14:11:05

+0

他沒有說任何事情是錯的,他問的是如何再次顯示舊值(意思是由視圖顯示)。 – Langdon 2013-10-04 14:29:57

+0

他表示發佈的表單保留了之前提交的舊值。我有完全相同的問題。 – 2013-10-04 20:12:36

0

一種方式做到這一點是使用ModelState.AddModelError

MVC的錯誤處理很好的教程,可以發現here

0

你可以通過與塔數據返回視圖

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

X是你需要返回的數據