2015-10-20 97 views
1

我在視圖中有一個窗體,並通過Submit按鈕將一些信息傳遞給Controller。在控制器中,在一個名爲SaveP的ActionResult中,我想驗證一些條件並將這些驗證的結果返回給視圖,以便在按下提交按鈕後重新加載頁面時顯示一些內容。ASP.NET MVC ViewBag或TempData?

的代碼是類似的東西:

if (!(editor.ID != null && !string.IsNullOrEmpty(editor.Number) && (!ext.SID.HasValue))) 
       { 
        _db.M.DeleteM(editor.PID); 
        pa.P.MID = null; 
        TempData["m"] = false; 

我想視圖中顯示,只有這些條件適用一些事情。 此外,這家名爲SaveP行動結果重定向到返回RedirectToAction("P", new { id = editor.ID });

我用ViewBag並沒有奏效,但後來我發現ViewBag元素不重定向後保存。然後,我嘗試了一個TempData,但它在視圖中是空的。我應該如何解決這個問題?謝謝!

+1

創建一個模型並添加一個新的屬性? – Canvas

+0

您是如何訪問您重定向到的GET方法中的'TempData'值的?你需要顯示相關的代碼。但是如果你想要做的只是傳遞一個'bool'值,那麼就給你的方法添加一個參數並使用'RedirectToAction(「P」,new {id = editor.ID,myBool = false})' –

+0

'TempData'在控制器操作(例如重定向)之間持續存在,您只能訪問一次。您重定向到的動作可以將'TempData'的值添加到'ViewBag'中。 – Silvermind

回答

1
RedirectToAction("P", new { id = editor.ID ,check = true}); 

和P動作會像

public ActionResult P(int id,bool check=false) 
{ 
    viewBag.check = check; 
} 

如果你通過檢查=真正的你會得到真正的支票P動作 ,如果你不傳遞任何東西,然後不要把它的價值設定爲假。 因此,如果這個方法是從多個位置呼叫,你因此未通過檢查的參數則不會引發錯誤...

0

這就是Model來。 您可以使用控制器中的模型對象將屬性值發送到查看。在您查看使用HTML助手將此model屬性與您所需的元素綁定。在您的發佈操作中創建此模型對象的參數。當模型從視圖中回傳時,它將被填充屬性。