【问题标题】:Get ViewBag Data after $.ajax post success c# .net razor在 $.ajax 发布成功后获取 ViewBag 数据 c# .net razor
【发布时间】:2016-05-11 16:17:33
【问题描述】:

我正在使用 ajax 发布数据,并且已成功发布。在控制器端,我正在用发布的数据填充 ViewBag,但我在从 ViewBag 获取数据时遇到问题。

这是 Ajax 代码:

$.ajax({
            type: "POST",
            url: '../Home/getExistUsersFromJSON',
            data: JSON.stringify({ jsonString: JSON.stringify(array) }),
            traditional: true,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            complete: function () {
                // Alert that it was succesful!
                var jsonList = '@Html.Raw(Json.Convert(ViewBag.newUsers))';
                var jsList = JSON.parse(jsonList);
                bootbox.dialog({
                    message: jsList,
                    title: "Utilisateurs",
                    buttons: {
                        success: {
                            label: "Success!",
                            className: "btn-success"
                        }
                    }
                });
            }
        });

这是控制器端

 [ActionName("getExistUsersFromJSON")]
    public void getExistUsersFromJSON(string jsonString)
    {

        IList<newUser> ctm =
      new JavaScriptSerializer().Deserialize<IList<newUser>>(jsonString);
        ViewBag.newUsers = ctm.ToList();

    }

【问题讨论】:

  • 你为什么要传递一个只包含另一个 JSON 字符串的 JSON 对象?您应该直接传递数组。
  • 当我直接传递数组时,我收到错误请求的错误。这是将 JSON 数组传递给控制器​​的唯一方法
  • 您是否阅读了错误信息?您的操作中可能有错误的参数。
  • 如果是这种情况,当我用 jsonString 中传递的 JSON 数据填充 IList 时会出现错误

标签: c# jquery .net ajax asp.net-mvc


【解决方案1】:

ViewBag 只是一个在渲染页面时传递给视图的对象。

在 AJAX 中使用它没有任何意义;您的服务器端 Razor 代码仅在初始服务器渲染上运行。

您需要将 JSON 作为响应提供服务器(使用 Json())。

【讨论】:

  • 你能解释一下如何使用 Json() 从控制器中获取完整的 ajax 数据并显示在视图中
猜你喜欢
  • 2018-06-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2012-01-21
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多