2013-04-25 151 views
0

我在viewbag中設置一個錯誤消息,以便在每次回發後向用戶顯示,我不希望在頁面重新加載或刷新時顯示此錯誤消息。我試圖將它設置爲null,但它仍然顯示,因爲json參數仍然包含第一次提交的值。即使頁面刷新後,asp.net mvc actionresult仍保留參數值?

 [HttpPost] 
     [CustomAuthorize(Definitions.RoleAnalystManager, Definitions.RoleProjectManager)] 
     public ActionResult ExportReportAllMediaDetailsCsv(string json) 
     { 
      ViewBag.Error = null; 

      var serializer = new JavaScriptSerializer(); 
      var reportParams = serializer.Deserialize<ReportAllMediaDetailsParams>(json); 


      var rows = uow.Items.Report_AllMediaDetails(reportParams.profileID, reportParams.organisationID, reportParams.startDate, reportParams.endDate).ToList(); 

      if (rows.Count <= 1) 
      { 
       ViewBag.Error = "There were no results for the provided parameters, please adjust the parameters and try again."; 
       return View("AllMediaDetails"); 
      } 

回答

1

這是因爲刷新頁面實際上重新提交了以前的請求,所以您的POST請求被瀏覽器重新提交。無法在一分鐘內測試;然而,或許可以嘗試設置bool - TempData["FirstLoad"] - 爲true的GET請求,然後做這樣的事情在POST方法:

if (TempData["FirstLoad"] != null && TempData["FirstLoad"] == true) 
{ 
    if (rows.Count <= 1) 
    { 
     ViewBag.Error = "..."; 
    } 
} 
else 
{ 
    ViewBag.Error = null; 
    return View(); 
} 
TempData["FirstLoad"] = false; 
return View("AllMediaDetails"); 

我上的TempData存儲在會話的事實基礎這一點,所以它的值應該保留在刷新上(而不是像原來那樣重新提交,就像值被傳遞爲例如隱藏字段一樣)。

相關問題