从action方法返回JSON

时间:2013-05-01 16:00:59

标签: asp.net-mvc json

我有这个行动方法。它将返回一些JSON。

public JsonResult Get()
{
        ...

        return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };  
}

然后我在我的视图中有一个指向Get动作方法的脚本标记。

 <script type="text/javascript" src="@Url.Content("~/resource/get")"></script>

问题是我无法访问JS代码中的JSON数据。似乎JSON需要以某种方式执行。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您可以在jQuery中调用该操作,然后直接处理Json:

$.ajax({
  dataType: "json",
  url: "/resource/get",
  success: function(data){
      var obj = JSON.parse(data);
  }
});

或更短的版本:

$.getJSON('/resource/get', function(data) { 
    var obj = data;
});

答案 1 :(得分:1)

如果您希望尽快提供JSON,而无需额外请求,请将其包含在初始页面加载中:

<script type="text/javascript">
    var myJson = @Html.Action("Get");
</script>

现在,您只需访问脚本中的myJson变量即可访问您的数据。

答案 2 :(得分:1)

如果您希望在服务器上构建页面时将其转储到HTML中,您可以将其添加到视图模型中,然后直接在页面上呈现它。这是一个伪代码示例:

<script type="javascript">
     var obj= JSON.parse('@Model.PropertyContainingJson');
</script>