【问题标题】:Get JSON's content from Partial View (ASP.NET MVC)从局部视图中获取 JSON 的内容 (ASP.NET MVC)
【发布时间】:2014-05-08 04:35:05
【问题描述】:

我有一个控制器来返回 JSON

    public ActionResult Project()
    {
        var q = from p in db.projects
                select new { p.name_project, p.contract_value };

        return Json(q.ToList(), JsonRequestBehavior.AllowGet);
    }

我创建了一个局部视图名称“Project.cshtml”来获取 JSON 并打印结果

<script>
    $.getJSON('/Chart/Project', function (data) {
        var items = [];
        $.each(data, function (key, val) {
            items.push('<li>' + key + ': ' + val.Title + ' (' + val.Count + ')</li>');
        });

        $('<ul />', {
            html: items.join('')
        }).appendTo('body');
    })
</script>

我在 Index.cshtml 中通过 HTMLHepler Html.Partial("Project") 调用 Partial View 但它返回了 javascript 代码,我想在该代码完成后获取内容!

【问题讨论】:

  • 在$(document).ready(function(){ $.getJSON... })中写入$.getJSON函数;
  • 如果您总是返回 JSON,您可能希望在您的操作签名中将 ActionResult 替换为 JsonResult。

标签: asp.net-mvc json


【解决方案1】:

渲染局部视图时,您的 $.getJson() 调用未执行。您需要将其包装在 $.ready() 函数(如下所示)或 javascript 自执行函数中

<script>
  $(function(){
    $.getJSON('/Chart/Project', function (data) {
      var items = [];
      $.each(data, function (key, val) {
          items.push('<li>' + key + ': ' + val.Title + ' (' + val.Count + ')</li>');
      });

      $('<ul />', {
          html: items.join('')
      }).appendTo('body');
    })
  });
</script>

【讨论】:

    【解决方案2】:

    你需要在你的getJson方法中解析json内容如下:

    var result = jQuery.parseJSON(data);
    

    然后在你的 $.each 函数中使用这个结果。

    Return Json content

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      相关资源
      最近更新 更多