В классическом средстве просмотра ASP.NET Web Forms мы можем установить ContentType на странице .aspx на нужный тип.Как установить contenttype в бритве (CSHTML)?
Есть ли прямой или рекомендуемый эквивалент в Razor?
В классическом средстве просмотра ASP.NET Web Forms мы можем установить ContentType на странице .aspx на нужный тип.Как установить contenttype в бритве (CSHTML)?
Есть ли прямой или рекомендуемый эквивалент в Razor?
Вы должны установить другой тип контента в своем методе действий.
public ActionResult MyAction() {
Response.ContentType = "something";
return View();
}
Это будет работать, я просто проверял, вы можете также добавить следующую строку в cshtml:
Response.ContentType = "application/javascript";
так, что это выглядит примерно так:
@{
ViewBag.Title = "Home Page";
Response.ContentType = "application/javascript";
}
Это просто зависит от того, где вы предпочитаете внести изменения.
Используйте это:
return Content(json, "application/json");
Ой ... Я нашел через Google, но мало кто говорит, что это не сработало. Спасибо за быстрый ответ marcind :) – kidoman
Один следующий вопрос ... должен ли я сделать это в контроллере или в представлении? @ {Response.ContentType = "..."; } Я предполагаю, что это лучше. – kidoman
Если бы вы следовали принципам принципов взаимоотношений, я бы сказал, что это неправильное место для этого. Ответ рассматривается как ответ на выходной поток. Я лично либо сделал бы это в методе действий, как описано выше, если это разовая вещь. Если у меня было несколько представлений, которым нужен собственный тип контента, я бы написал свой собственный класс, который происходит из 'ViewResult' и возвращает это вместо' View() '. Однако вы * можете * написать этот код в самом представлении, поэтому в конечном итоге это вопрос предпочтения. В конце концов вы должны сделать то, что получите, ваша работа сделана :) – marcind