2014-01-09 35 views
0

我在我的頁面有一個ViewBag。當頁面加載時,它顯示的值爲ViewBagMVC Viewbag更新的值不顯示

我也有一個DropDownList。我想更改選擇更改事件中的ViewBag值,並通過ajax將值發送到ControllerController也返回正確的值。

在我的代碼ViewBag正在更新,但它沒有顯示在HTML(在瀏覽器上)。

我沒有任何線索爲什麼它不工作!我View

<div id="UserSelection">--Select User-- 
    @Html.DropDownListFor(m => m.Item1, new SelectList(Users, "ID", "Names"), new { ID = "UserSelection", @Style = "width:50%;border:none" }) 
</div> 

@Html.Raw(ViewBag.UserID) 

Controller

public ActionResult Permission() 
{ 
    ViewBag.UserID = Session["UserID"].ToString(); 
    ViewBag.Permissions = Session["PermissionCollection"] as List<int>; 

    return View(); 
} 

[HttpPost] 
public ActionResult Users(string UserID) 
{ 
    List<int> data = new List<int>(); 
    int id = Convert.ToInt16(UserID); 

    Permission perm = new Permission(); 
    data = perm.SlectedPermissions(id); 

    ViewBag.UserID = UserID.ToString(); 
    ViewBag.Permissions = data as List<int>; 

    return View("Permission"); 
} 

jQuery

$("#UserSelection").change(function() { 
    var ID = $('#UserSelection option:selected').val(); 
    console.log(ID); 
    $("#empID").val(ID); 
    $.ajax({ 
     traditional: true, 
     async: false, 
     url: '@Url.Content("~/Permission/Users")', 
     type: "POST", 
     data: { UserID: ID }, 
     success: function (data) { 
     } 
    });    
}); 
+0

當你進行ajax調用而不更新前端的結果時,你如何期待數據被更新?我敢打賭,如果你做了一個正常的帖子,它會正常工作 – Pete

+0

更改'url:'@ Url.Content(「〜/ Permission/Users」)','到'url:'@ Url.Action(「Users」,「Permission 「)」,'。內容用於靜態文件(即圖片),而Action則用於應用程序中的網址。 – Marthijn

回答

0

您的看法Permissions.cshtml不使用ViewBag.Permissions

您可以access ViewBag data only in the returning view,在這種情況下它是Permissions.cshtml。

@Html.Raw(ViewBag.UserID)代碼是在主視圖中定義的,而不是「權限」視圖的一部分。因此它不適用於你