C# 在asp.net mvc3中使用JsonResult操作的用例是什么?

C# 在asp.net mvc3中使用JsonResult操作的用例是什么?,c#,asp.net-mvc,json,asp.net-mvc-3,c#-4.0,C#,Asp.net Mvc,Json,Asp.net Mvc 3,C# 4.0,什么时候在ASP.NET MVC 3应用程序中使用JsonResult操作是典型的 通常从何处调用JsonResult;来自html中呈现的另一个操作或actionlink 您能给我一些示例,其中您希望使用json而不是典型视图吗?来自客户端脚本的Ajax请求,不涉及整个页面加载。基本上。比如说,您希望根据对另一个字段的选择,用一个值列表填充jQuery autocomplete,因此无法确定页面加载的数据。我通常会在$.ajax调用中调用一个action方法,然后返回一个项目数组来填充auto

什么时候在ASP.NET MVC 3应用程序中使用JsonResult操作是典型的

通常从何处调用JsonResult;来自html中呈现的另一个操作或actionlink


您能给我一些示例,其中您希望使用json而不是典型视图吗?

来自客户端脚本的Ajax请求,不涉及整个页面加载。基本上。

比如说,您希望根据对另一个字段的选择,用一个值列表填充jQuery autocomplete,因此无法确定页面加载的数据。我通常会在
$.ajax
调用中调用一个action方法,然后返回一个项目数组来填充autocomplete

例如,这里是我的jQuery,一个函数用于调用,另一个函数被调用以使用接收到的数据填充automcomplete:

$(function() {
    $.ajax({
            url: '@Url.Action("GetHomes", "Account")',
            type: "POST",
            datatype: "json",
            success: function (data) {
                if (data.Success || data.Success == null) {
                    WireUpHomesData(data);
                } else {
                    ShowErrorDialog();
                }
            }
        });

    ShowDialog();
});

function WireUpHomesData(data) {
    var homes = new Array();

    for (var i = 0; i < data.length; i++) {
        homes[i] = { label: data[i].HomeName, text: data[i].HomeId, icon: data[i].HomeIcon, desc:data[i].HomeAddress };
    }
    $("#home").autocomplete({
            source: homes,
            select: function (event, item) {
                homeUrl = '@Url.Action("Site", "Sites")/' + item.item.text;
            }
        }).data("autocomplete")._renderItem = function (ul, item) {
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append("<a><span class='" + item.icon + "'/><span class='fs-ui-autocomplete-home'>" + item.value + "</span><br>" + item.desc+ "</a>")
            .appendTo(ul);
    }; 
    $(".ui-autocomplete").addClass("fs-ui-autocomplete");
}
这是被调用的方法的方法签名:

public IEnumerable<HomeInfo> HomesForUser()

JsonResult非常有用,可以从javascript进行ajax调用,例如使用jQuery中的getJSON:


JsonResult的好处是它可以毫不费力地返回JSON格式的结果。

JsonResult
是从
ActionResult
类派生的子类。当您想要返回Json对象时,可以使用此选项

public JsonResult GetItems()
{
  var jsonResult=new { Id = "23", Name = "Scott"};
  return Json(jsonResult,JsonBehaviour.AllowGet);
}
这将返回与相同的结果

public ActionResult GetItems()
{
  var jsonResult=new { Id = "23", Name = "Scott"};
  return Json(jsonResult,JsonBehaviour.AllowGet);
}
它的可能用途是以异步方式获取某些数据块。例如:假设您有一个下拉列表,其中显示的是州,当用户选择一个州时,您希望将属于该州的城市列表显示在页面中,而不显示页面refrest。您可以调用usejqueryajax/getJson方法(jqueryget的缩写,数据类型为json)从返回
json
数据的
ActionMethod
获取此数据

一个调用返回Json数据的操作方法的小示例

$(function(){
   $.getJSON('YourController/GetItems', function(data) {
      alert(data.Id);
      alert(data.Name );
   });
});

对于JsonResult类,如果未明确指定任何内容,则响应内容类型将为“
application/json
”。在内部,
ExecuteResult
方法在返回数据时使用
JavaScriptSerializer
对内容进行序列化。

每当有客户端处理和客户端需要时,数据使用jsonresult,如自动填充或远程验证

我似乎离不开你,伙计,如果我回答一个问题,你就在那里,如果我想回答一个问题,你就在那里P@mattytommo:酷:)我只是想帮你。很棒而且非常完整的答案。谢谢你的说明。完全为我填补了空白。塞瑟诺问题!很高兴我能帮忙:)
public ActionResult GetItems()
{
  var jsonResult=new { Id = "23", Name = "Scott"};
  return Json(jsonResult,JsonBehaviour.AllowGet);
}
$(function(){
   $.getJSON('YourController/GetItems', function(data) {
      alert(data.Id);
      alert(data.Name );
   });
});