パラメーターに応じて、JSONまたはHTMLの一部を返すコントローラアクションを作成しようとしています。その結果をMVCページに非同期で返すには、どのような方法がありますか?
アクションメソッドでは、JSONをページに返すために、return Json(object)を使用します。
public ActionResult SomeActionMethod() {
return Json(new {foo="bar", baz="Blech"});
}
次に、Ajax を使用してアクション メソッドを呼び出します。のような ViewPage のヘルパーメソッドのいずれかを使用できます。
<%= Ajax.ActionLink("SomeActionMethod", new AjaxOptions {OnSuccess="somemethod"}) %>
SomeMethodはjavascriptのメソッドで、返されたJsonオブジェクトを評価します。
プレーンな文字列を返したい場合は、ContentResult.Methodを使用すればよいでしょう。
public ActionResult SomeActionMethod() {
return Content("hello world!");
}
ContentResult は、デフォルトでは contentType として text/plain を返します。
これはオーバーロード可能なので、次のようにすることもできます。
return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");
JSONデータを処理するもう一つの良い方法は、JQueryのgetJSON関数を使うことです。 を呼び出すことができます。
public ActionResult SomeActionMethod(int id)
{
return Json(new {foo="bar", baz="Blech"});
}
jquery getJSONメソッドから{{5379444}}メソッドを呼び出すには、単に...
$.getJSON("../SomeActionMethod", { id: someId },
function(data) {
alert(data.foo);
alert(data.baz);
}
);