2010-12-10 4 views

ответ

15

Вы должны установить другой тип контента в своем методе действий.

public ActionResult MyAction() { 
    Response.ContentType = "something"; 
    return View(); 
} 
+0

Ой ... Я нашел через Google, но мало кто говорит, что это не сработало. Спасибо за быстрый ответ marcind :) – kidoman

+0

Один следующий вопрос ... должен ли я сделать это в контроллере или в представлении? @ {Response.ContentType = "..."; } Я предполагаю, что это лучше. – kidoman

+1

Если бы вы следовали принципам принципов взаимоотношений, я бы сказал, что это неправильное место для этого. Ответ рассматривается как ответ на выходной поток. Я лично либо сделал бы это в методе действий, как описано выше, если это разовая вещь. Если у меня было несколько представлений, которым нужен собственный тип контента, я бы написал свой собственный класс, который происходит из 'ViewResult' и возвращает это вместо' View() '. Однако вы * можете * написать этот код в самом представлении, поэтому в конечном итоге это вопрос предпочтения. В конце концов вы должны сделать то, что получите, ваша работа сделана :) – marcind

13

Это будет работать, я просто проверял, вы можете также добавить следующую строку в cshtml:

Response.ContentType = "application/javascript"; 

так, что это выглядит примерно так:

@{ 
    ViewBag.Title = "Home Page"; 
    Response.ContentType = "application/javascript"; 
} 

Это просто зависит от того, где вы предпочитаете внести изменения.

0

Используйте это:

return Content(json, "application/json");