2012-10-25 46 views
0

複製問題:清除服務器的驗證消息之前提交

  1. 創建服務器驗證的ASP.NET MVC 3頁。
  2. 提交驗證錯誤。
  3. 服務器驗證錯誤顯示爲紅色。
  4. 更正驗證錯誤並再次提交,然後成功將 重定向到另一個報告頁面。
  5. 單擊報告頁面上的「後退」按鈕,仍會在原始表單上顯示驗證錯誤 消息。

用戶在單擊後退按鈕時看到服務器驗證消息而生氣。

  • 我不會考慮解決方案來禁用後退按鈕。
  • 我不會考慮點擊 後退按鈕來刷新頁面的解決方案。

我會考慮服務器驗證消息在成功提交表單或任何其他有效的解決方案之前消失。

感謝

+0

但是您是否仍想要SUBMIT行爲的BACK BUTTON?奇怪 – nalaiqChughtai

回答

0

爲了避免看到的驗證消息,我禁用緩存,以便瀏覽器會自動重新加載頁面當用戶點擊後退按鈕。但是,如果頁面先前使用POST方法提交,用戶會看到表單重新提交警告。要解決這個問題,如果ModelState無效,我使用javascript window.history.back()POST請求更改回以前的GET請求。

下面是詳細信息...

在控制器創建兩個功能:一個[HttpGet]屬性和一個與[HttpPost]屬性。

HttpPost版本,添加以下邏輯...

  1. 如果ModelState中是無效的,並ModelState中表格/模型數據保存到TempData的
  2. 返回一個簡單的查看包含類似下面的JavaScript。

    <HTML> <體> <腳本>的window.history。背部(); < /腳本> < /體> </HTML >

HttpGet版本,

  1. 添加屬性[OutputCache(NoStore = true, Duration = 0)]
  2. 添加邏輯以從TempData的
  3. 加載的ModelState和模型數據
  4. 傳遞模型da ta查看