【问题标题】:MVC Viewbag Updated Value Not ShowingMVC Viewbag 更新值未显示
【发布时间】:2014-01-09 10:30:05
【问题描述】:

我的页面中有ViewBag。页面加载时,显示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) {
        }
    });               
});

【问题讨论】:

  • 当您进行 ajax 调用而不用结果更新前端时,您希望如何更新数据?我敢打赌,如果你发一个正常的帖子,它会工作得很好
  • url: '@Url.Content("~/Permission/Users")', 更改为url: '@Url.Action("Users", "Permission")',。 Content 用于静态文件(即图像),而 Action 用于应用程序中的 url。

标签: jquery asp.net-mvc viewbag


【解决方案1】:

您的视图Permissions.cshtml 没有使用ViewBag.Permissions

你可以access ViewBag data only in the returning view,这里是Permissions.cshtml。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2021-10-10
    • 2016-12-19
    • 2016-03-02
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多