Как изменить возвращенный ContentType в контроллере ASP.NET MVC (ActionResult) - PullRequest
20 голосов
/ 14 декабря 2010

У меня есть ASP.NET MVC контроллер с именем словарь с методом ControlsLangJsFile.Метод возвращает представление пользовательского элемента управления (ASCX), который содержит переменные JavaScript.

Когда я вызываю метод, он возвращает переменные с проанализированными строками, но тип контента - html / text.Это должно быть: application / x-javascript

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

Как мне этого добиться?

Ответы [ 4 ]

32 голосов
/ 14 декабря 2010

Пользовательский элемент управления не принимает ContentType = "text / xml"

Решение:

public ActionResult ControlsLangJsFile()
    {
        Response.ContentType = "text/javascript";
        return View("~/Views/Dictionary/ControlsLangJsFile.ascx");
    }
16 голосов
/ 10 апреля 2013

У меня был тот же вопрос при создании вида бритвы с 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...
3 голосов
/ 14 декабря 2010

Вот так, просто измените тип контента соответственно:

ASP.NET MVC и тип содержимого text / xml

1 голос
/ 18 марта 2013

Попробуйте:

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