MVC Viewbag更新值未显示

时间:2014-01-09 10:30:06

标签: jquery asp.net-mvc viewbag

我的页面中有ViewBag。加载页面时,它显示ViewBag值。

我也有DropDownList。我想更改选择更改事件的ViewBag值,并通过Controller将值发布到ajaxController也会返回正确的值。

在我的代码中,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) {
        }
    });               
});

1 个答案:

答案 0 :(得分:0)

您的观点Permissions.cshtml未使用ViewBag.Permissions

您可以access ViewBag data only in the returning view,在这种情况下,它是Permissions.cshtml。

@Html.Raw(ViewBag.UserID)代码在主视图中定义,而不是权限视图的一部分。因此它不适合你