如何更改ASP.NET MVC控制器中返回的ContentType(ActionResult)

时间:2010-12-14 12:52:53

标签: asp.net asp.net-mvc asp.net-mvc-2 asp.net-ajax

我使用方法ControlsLangJsFile将ASP.NET MVC控制器命名为字典。 方法返回包含JavaScript变量的用户控件(ASCX)视图。

当我调用方法时,它返回带有解析字符串的变量,但内容类型是html / text。它应该是: application / x-javascript

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

我如何实现这一目标?

4 个答案:

答案 0 :(得分:32)

用户控件不接受ContentType =“text / xml”

解决方案:

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

答案 1 :(得分:15)

在使用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...

答案 2 :(得分:3)

像这样,只需相应更改内容类型:

ASP.NET MVC and text/xml content type

答案 3 :(得分:1)

尝试:

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