web-dev-qa-db-ja.com

ASP.NET MVCコントローラー(ActionResult)で戻りコンテンツタイプを変更する方法

ControlsLangJsFileメソッドを使用して、ASP.NET MVCコントローラーにディクショナリーという名前を付けています。メソッドは、JavaScript変数を含むユーザーコントロール(ASCX)のビューを返します。

メソッドを呼び出すと、解析された文字列を含む変数が返されますが、コンテンツタイプはhtml/textです。それは:application/x-javascript

public ActionResult ControlsLangJsFile()
    {
        return View("~/Views/Dictionary/ControlsLangJsFile.ascx",);
    }

どうすればこれを達成できますか?

21
jmav

ユーザーコントロールはContentType = "text/xml"を受け入れません

解決:

public ActionResult ControlsLangJsFile()
    {
        Response.ContentType = "text/javascript";
        return View("~/Views/Dictionary/ControlsLangJsFile.ascx");
    }
36
jmav

JSを使用してかみそりのビューを構築しているときに同じ質問があり、@ jmavのソリューションを使用しようとしました:

public ActionResult Paths()
{
    Response.ContentType = "text/javascript"; //this has no effect
    return View();
}

View()を返す場合は機能しません。コントローラーメソッドで何が割り当てられていても、ビューのレンダリングによってコンテンツタイプ自体が設定されるようです。

代わりに、ビューコード自体で割り当てを行います。

// this lives in viewname.cshtml/vbhtml
@{
    this.Response.ContentType = "text/javascript";
}
// script stuff...
17
Peter

このように、それに応じてコンテンツタイプを変更します。

ASP.NET MVCおよびtext/xmlコンテンツタイプ

3
rsenna

試してください:

return Json(new
{
      uCode = SysContext.CurrentUserCode,
      uPwd = SysContext.CurrentUserPwd,
      rMe = SysContext.RememberMe
}, "application/json", JsonRequestBehavior.AllowGet);
1
user2181527