1. ホーム
  2. ajax

[解決済み] JSONまたは部分的なhtmlを返すASP.NET MVCコントローラのアクション

2022-03-22 19:41:48

質問

私は、パラメータに応じてJSONまたは部分的なhtmlを返すコントローラアクションを作成しようとしています。その結果をMVCページに非同期で返すには、どのような方法があるでしょうか?

どのように解決しますか?

アクションメソッドで、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");