2012-11-20 78 views
2

我想基於我的控制器中的if/else條件爲我的viewbag創建動態屬性。 viewbag顯示的內容取決於我在控制器中的邏輯。在我看來,我嘗試用剃刀語法調用我的viewbag,但沒有呈現給頁面。MVC3 Razor - 在控制器和視圖中使用viewbag

[HttpPost] 
     public ActionResult EditUser(vw_UserManager_Model edituser) 
     { 
      UserManager.Models.vw_UserManager_Model model = edituser; 
      int outcome = 0; 
       outcome = UserManager.DAL.EditUser(model); 
       if (outcome == 1) 
       { 
        ViewBag.Message = "Successfully edited user" + model.UserName; 
        ViewBag.Description = "Look below for full details."; 
        //ViewData["Message"] = "Successfully edited user" + model.UserName; 
        return RedirectToAction("showSuccess", model); 
       } 
       else 
       { 
        ViewBag.Message = "Failure"; 
        return RedirectToAction("showFailure", model); 
       } 
     } 

#region successErrorHandling 
     public ActionResult showError(List<string> ErrorMessage) 
     { 
      ViewBag.ErrorMessage = ErrorMessage[0]; 
      return View("ErrorMessageView"); 
     } 

     public ActionResult showSuccess(vw_UserManager_Model model) 
     { 

      return View("SuccessMessageeView", model); 
     } 

我爲viewbag,消息和描述設置了兩個屬性。如果成功或失敗,我會進行重定向。

@model UserManager.Models.vw_UserManager_Model 
<h2>@ViewBag.Message</h2> 
<br /> 
<h4>@ViewBag.Description</h4> 
<h2> 
    SuccessMessageeView</h2> 
<br /> 
User Created: 
@using (Html.BeginForm()) 
{ 
    <ul> 
     <li> <b>@Html.Label("Username: ")</b>@Model.UserName</li> 
     <li> <b>@Html.Label("Salutation: ")</b>@Model.salutation</li> 
     <li> <b>@Html.Label("Firstname: ")</b>@Model.firstname</li> 
     <li> <b>@Html.Label("Lastname: ")</b>@Model.lastname</li> 
     <li> <b>@Html.Label("Email: ")</b>@Model.email</li> 
     <li> <b>@Html.Label("Group name: ")</b>@Model.group_name</li> 
     <li> <b>@Html.Label("Is active: ")</b>@Model.isactive</li> 
    </ul> 
} 

在我看來,我然後調用我的viewbag,但它不呈現。我做錯了嗎?

+0

您失去了重定向ViewBag的狀態。請發佈您的showSuccess和showFailure操作(以及您的視圖的名稱),以便我們可以提出解決方案。 – Hari

+0

@哈里好吧我會編輯我的帖子。 –

+0

我想我把viewbag放在錯誤的ActionResult方法中。 :( –

回答

0

如果可以放在視圖模型中,請不要使用ViewBag。 Viewbag只能用於在視圖的同一頁面上與他一起工作。

5

正如Hari提到的,​​因爲您正在重定向,您將丟失視圖數據。如果您想在請求之間保留數據,請改爲use TempDataThis blog描述了什麼TempData應該用於。

相關問題