パラメータに応じて JSON または部分的な HTML を返すコントローラー アクションを作成しようとしています。結果を MVC ページに非同期的に返す最適な方法は何ですか?
ベストアンサー1
アクション メソッドで、JSON(object) を返して、ページに JSON を返します。
public ActionResult SomeActionMethod() {
return Json(new {foo="bar", baz="Blech"});
}
次に、Ajaxを使用してアクションメソッドを呼び出します。ViewPageのヘルパーメソッドの1つを使用できます。
<%= Ajax.ActionLink("SomeActionMethod", new AjaxOptions {OnSuccess="somemethod"}) %>
SomeMethod は、返された Json オブジェクトを評価する JavaScript メソッドになります。
プレーンな文字列を返したい場合は、ContentResult を使用できます。
public ActionResult SomeActionMethod() {
return Content("hello world!");
}
ContentResult は、デフォルトで contentType として text/plain を返します。
これはオーバーロード可能なので、次のようにすることもできます。
return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");