1. ホーム
  2. asp.net-mvc-3

[解決済み] asp.net mvc3はraw htmlをviewに返す。

2023-07-03 23:26:06

質問

コントローラから生のhtmlを返す方法は他にありますか?以下のように、viewbag.を使用するのとは対照的に。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.HtmlOutput = "<HTML></HTML>";
        return View();
    }
}

@{
    ViewBag.Title = "Index";
}

@Html.Raw(ViewBag.HtmlOutput)

どのように解決するのですか?

そんなことをしても、あまり意味がありません、なぜなら View はコントローラではなく、htmlを生成する必要があるからです。しかし、いずれにせよ コントローラ.コンテンツメソッド を使えば、結果の HTML を指定することができ、content-type や encoding も指定できます。

public ActionResult Index()
{
    return Content("<html></html>");
}

あるいは、asp.net-mvcフレームワークに組み込まれたトリックを使うこともできます - アクションが直接文字列を返すようにするのです。これは、ユーザーのブラウザに文字列のコンテンツを配信します。

public string Index()
{
    return "<html></html>";
}

実際には、アクションの結果が ActionResult 以外のアクションの結果に対して、フレームワークはそれを文字列にシリアライズしてレスポンスに書き込もうとします。