Asp.net mvc 从action方法返回JSON
我有这个动作。它将返回一些JSONAsp.net mvc 从action方法返回JSON,asp.net-mvc,json,Asp.net Mvc,Json,我有这个动作。它将返回一些JSON public JsonResult Get() { ... return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } 然后在我的视图中有一个脚本标记,指向Get action方法 <script type="text/javascript" src="@Url.Content("~/
public JsonResult Get()
{
...
return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
然后在我的视图中有一个脚本标记,指向Get action方法
<script type="text/javascript" src="@Url.Content("~/resource/get")"></script>
问题是我无法访问JS代码中的JSON数据。似乎JSON需要以某种方式执行。有什么建议吗?您可以在jQuery中调用操作,然后直接处理Json:
$.ajax({
dataType: "json",
url: "/resource/get",
success: function(data){
var obj = JSON.parse(data);
}
});
或更简短的版本:
$.getJSON('/resource/get', function(data) {
var obj = data;
});
您只需在jQuery中调用操作,然后直接处理Json:
$.ajax({
dataType: "json",
url: "/resource/get",
success: function(data){
var obj = JSON.parse(data);
}
});
或更简短的版本:
$.getJSON('/resource/get', function(data) {
var obj = data;
});
如果希望JSON尽快可用,无需额外请求,请将其包含在初始页面加载中:
<script type="text/javascript">
var myJson = @Html.Action("Get");
</script>
现在,您只需访问脚本中的myJson变量即可访问数据。如果希望JSON尽快可用,无需额外请求,请将其包含在初始页面加载中:
<script type="text/javascript">
var myJson = @Html.Action("Get");
</script>
现在,您可以访问脚本中的myJson变量来访问数据。如果希望在服务器上构建页面时将其转储到HTML中,可以将其添加到视图模型中,然后直接在页面上呈现。下面是一个伪代码示例:
<script type="javascript">
var obj= JSON.parse('@Model.PropertyContainingJson');
</script>
如果希望在服务器上构建页面时将其转储到HTML中,可以将其添加到视图模型中,然后直接在页面上呈现。下面是一个伪代码示例:
<script type="javascript">
var obj= JSON.parse('@Model.PropertyContainingJson');
</script>
我知道,但我只是想知道有没有别的办法?也许是mvc html助手?这种方式有什么问题?你有什么特别需要解决的吗?你能告诉我为什么你想用脚本引用而不是通过Ajax调用它吗?我只是想让JSON对象尽快准备好。那么为什么不在document上立即执行这个方法呢。准备好了吗?你也可以使用$.getJSON,我在答案中添加了一个示例,只有3行。但不管怎么说,区别并没有那么大,是吗?我知道,但我只是想知道是否还有其他办法?也许是mvc html助手?这种方式有什么问题?你有什么特别需要解决的吗?你能告诉我为什么你想用脚本引用而不是通过Ajax调用它吗?我只是想让JSON对象尽快准备好。那么为什么不在document上立即执行这个方法呢。准备好了吗?你也可以使用$.getJSON,我在答案中添加了一个示例,只有3行。但无论如何,区别并没有那么大,是吗?你知道你可以直接返回Jsondata;对吧?我知道,但是无论如何你都必须设置JsonRequestBehavior。那么为什么不用[HttpGet]属性来修饰这个方法呢?无论如何你都必须将JsonRequestBehavior设置为AllowGet。你知道你可以直接返回Jsondata;对吧?我知道,但是无论如何你都必须设置JsonRequestBehavior。那么为什么不用[HttpGet]属性来修饰这个方法呢?无论如何你都必须将JsonRequestBehavior设置为AllowGet。。