6

ASP.NET MVC 3 アプリケーションで JsonResult アクションを使用するのは、どのような場合ですか?

通常、JsonResult はどこから呼び出されますか。別のアクションまたは html でレンダリングされたアクションリンクから?

典型的なビューの代わりに json が必要な例をいくつか教えてください。

4

5 に答える 5

4

たとえば、別のフィールドの選択に基づいて値のリストを jQuery オートコンプリートに入力したいので、ページの読み込み時にデータを判断できないとします。通常、呼び出しでアクション メソッドを$.ajax呼び出し、項目の配列を返してオートコンプリートに入力します。

例、ここに私のjQueryがあります.1つは呼び出し用の関数で、もう1つは受信したデータをオートコンプリートに入力するために呼び出されます:

$(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 JsonResult GetHomes()
{
    return Json(RequiresAclAttribute.HomesForUser());
}

呼び出されるメソッドのメソッド シグネチャは次のとおりです。

public IEnumerable<HomeInfo> HomesForUser()

わかりやすくするために、HomeInfoクラスは次のとおりです。

public class HomeInfo
{
    public string HomeId { get; set; }
    public string HomeName { get; set; }
    public string DisplayName { get; set; }
    public string HomeAddress { get; set; }
    public string HomeIcon { get; set; }
}
于 2012-05-16T19:20:31.700 に答える
3

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);
}

これを使用して、非同期の方法でデータの一部を取得することができます。例:州を表示しているドロップダウンがあり、ユーザーが州を選択したときに、その州に属する都市のリストを表示し、ページを再表示せずにページに表示したいとします。jQuery ajax /getJson メソッド (データ型として json を使用した jQuery get の省略形) メソッドを使用して、データActionMethodを返すメソッドからこのデータを取得できJsonます。

Json データを返す Action メソッドを呼び出す小さな例

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

JsonResult クラスでは、application/json明示的に何も指定されていない場合、応答のコンテンツ タイプは " " になります。このExecuteResultメソッドはJavaScriptSerializer 、データを返すときにコンテンツをシリアル化するために使用します。

于 2012-05-16T19:23:30.583 に答える
1

JsonResult は、javascript から ajax 呼び出しを行う場合に非常に便利です。たとえば、jQuery から getJSON を使用します: http://api.jquery.com/jQuery.getJSON/

JsonResult の利点は、手間をかけずに JSON 形式の結果を返すことです。

于 2012-05-16T19:22:39.530 に答える
0

クライアント側の処理があり、クライアントが自動入力やリモート検証のようにデータで jsonresult を使用する必要がある場合はいつでも

于 2016-09-06T13:55:01.907 に答える
0

ページ全体の読み込みを伴わないクライアント スクリプトからの Ajax リクエスト。基本的。

于 2012-05-16T19:19:42.543 に答える