Я пытаюсь создать действия контроллера, которые будут возвращать либо JSON, либо частичный HTML в зависимости от параметра. Каков наилучший способ получить результат, возвращаемый на страницу MVC асинхронно?
ajax
asp.net-mvc
json
asp.net-ajax
NathanD
источник
источник
Я думаю, что вы должны рассмотреть AcceptTypes запроса. Я использую его в моем текущем проекте, чтобы вернуть правильный тип контента следующим образом.
Ваше действие на контроллере может проверить его как на объекте запроса
Затем вы можете реализовать aspx представления для обслуживания частичного случая ответа xhtml.
Затем в jQuery вы можете получить его, передав параметр типа как json:
Надеюсь, это поможет Джеймсу
источник
Другим хорошим способом работы с данными JSON является использование функции getQSON JQuery. Вы можете позвонить
Метод из метода jQuery getJSON просто ...
источник
return Json(new {foo="bar", baz="Blech"});
делает!Я обнаружил пару проблем, связанных с реализацией вызовов GET MVC ajax с помощью JQuery, которые вызвали у меня головную боль, поэтому я делился здесь решениями.
JsonRequestBehavior.AllowGet
; без этого MVC возвращал ошибку HTTP 500 (сdataType: json
указанным на клиенте).cache: false
к вызову $ .ajax, в противном случае вы получите ответы HTTP 304 (вместо ответов HTTP 200), и сервер не обработает ваш запрос.Образец JQuery:
Пример кода MVC:
источник
Чтобы ответить на другую половину вопроса, вы можете позвонить:
когда вы хотите вернуть частичный HTML. Вам просто нужно будет найти способ решить, хочет ли запрос JSON или HTML, возможно, основываясь на части / параметре URL.
источник
Альтернативное решение со структурой кодирования
Действие вернуть JSON
контроллер
Страница бритвы
Действие return html
контроллер
Страница бритвы
источник
Возможно, вы захотите взглянуть на эту очень полезную статью, которая освещает это очень красиво!
Просто подумал, что это может помочь людям, которые ищут хорошее решение этой проблемы.
http://weblogs.asp.net/rashid/archive/2009/04/15/adaptive-rendering-in-asp-net-mvc.aspx
источник
PartialViewResult и JSONReuslt наследуются от базового класса ActionResult. поэтому, если тип возвращаемого значения определен динамически, объявите выход метода как ActionResult.
источник
Для тех, кто перешел на MVC 3, есть удобный способ использования MVC3 и Json.
источник
источник
Гибкий подход для получения различных результатов на основе запроса
Request.IsAjaxRequest()
Метод достаточно прост: он просто проверяет HTTP заголовки для входящего запроса , чтобы увидеть , если значение Х-Requested-With заголовкаXMLHttpRequest
, который автоматически добавляется большинством браузеров и AJAX-сред.Пользовательский метод расширения, чтобы проверить, является ли запрос для json или нет, чтобы мы могли вызывать его из любого места, точно так же, как метод расширения Request.IsAjaxRequest ():
Источник: https://www.safaribooksonline.com/library/view/programming-aspnet-mvc/9781449321932/ch06.html#_javascript_rendering
источник