ASP.NET MVC 3 アプリケーションで JsonResult アクションを使用するのは、どのような場合ですか?
通常、JsonResult はどこから呼び出されますか。別のアクションまたは html でレンダリングされたアクションリンクから?
典型的なビューの代わりに json が必要な例をいくつか教えてください。
ASP.NET MVC 3 アプリケーションで JsonResult アクションを使用するのは、どのような場合ですか?
通常、JsonResult はどこから呼び出されますか。別のアクションまたは html でレンダリングされたアクションリンクから?
典型的なビューの代わりに json が必要な例をいくつか教えてください。
たとえば、別のフィールドの選択に基づいて値のリストを 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; }
}
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
、データを返すときにコンテンツをシリアル化するために使用します。
JsonResult は、javascript から ajax 呼び出しを行う場合に非常に便利です。たとえば、jQuery から getJSON を使用します: http://api.jquery.com/jQuery.getJSON/
JsonResult の利点は、手間をかけずに JSON 形式の結果を返すことです。
クライアント側の処理があり、クライアントが自動入力やリモート検証のようにデータで jsonresult を使用する必要がある場合はいつでも
ページ全体の読み込みを伴わないクライアント スクリプトからの Ajax リクエスト。基本的。