我有不同的值的形式,由用戶輸入,那麼用戶發送查詢並處理結果的搜索。模式或方式導致
這很簡單,但問題是這樣。
在MVC中如果表單有錯誤,要在服務器上進行驗證,應該再次顯示錯誤的表單。但是如果我將請求發送到數據搜索操作,我應該回到重定向到諮詢操作表單,這會丟失驗證消息。
目前我們要做的就是請求數據,以協商形式的行動,然後如果一切都很好,我們重定向操作結果傳送與TempData的請求中的數據。
這種情況下有沒有更好的方法?
我有不同的值的形式,由用戶輸入,那麼用戶發送查詢並處理結果的搜索。模式或方式導致
這很簡單,但問題是這樣。
在MVC中如果表單有錯誤,要在服務器上進行驗證,應該再次顯示錯誤的表單。但是如果我將請求發送到數據搜索操作,我應該回到重定向到諮詢操作表單,這會丟失驗證消息。
目前我們要做的就是請求數據,以協商形式的行動,然後如果一切都很好,我們重定向操作結果傳送與TempData的請求中的數據。
這種情況下有沒有更好的方法?
如果我理解正確,PRG模式應該適用於您的情況。在後期操作中,如果modelstate無效,則重定向回諮詢形式,否則繼續搜索操作。過濾器將在內部將錯誤保存在tempdata中。
MVC3 model validation best practice redirect after post/state change
在回報View(model)
驗證錯誤或RedirectToAction()
取決於ModelState中:
ActionResult Consult(@params) {
if (ModelState.IsValid) {
//validation succeeded.
return RedirectToAction("SearchResults", {searchParams = @params});
}
return View(@params);
}
的一點是,你可以重定向時傳遞參數。
好了,這說明什麼,我們現在正在做的,問題是,是否有任何圖案或不同的模式來這樣做,因爲我們不喜歡用相同的URL諮詢 –
基本上做重定向或顯示結果,你有一個非標準的場景,因爲通常搜索的形式(或形式收集搜索PARAMS)是在同一個頁面(視圖)的結果上。在這種情況下,您可以同時返回驗證異常或搜索結果(或兩者)。但既然你有這種特殊情況,你必須處理好你所擁有的。 – Tengiz