Estou tentando criar ações do controlador que retornarão JSON ou html parcial, dependendo de um parâmetro. Qual é a melhor maneira de obter o resultado retornado a uma página MVC de forma assíncrona?
ajax
asp.net-mvc
json
asp.net-ajax
NathanD
fonte
fonte
Eu acho que você deve considerar os AcceptTypes da solicitação. Estou usando-o no meu projeto atual para retornar o tipo de conteúdo correto da seguinte maneira.
Sua ação no controlador pode testá-lo como no objeto de solicitação
Você pode implementar o aspx da visualização para atender ao caso de resposta xhtml parcial.
Em jQuery, você pode buscá-lo passando o parâmetro type como json:
Espero que isso ajude James
fonte
Outra boa maneira de lidar com dados JSON é usar a função JQuery getJSON. Você pode ligar para o
Método do método jquery getJSON simplesmente ...
fonte
return Json(new {foo="bar", baz="Blech"});
faz!Encontrei alguns problemas ao implementar chamadas MVC ajax GET com JQuery, o que me causou dores de cabeça, portanto, compartilhando soluções aqui.
JsonRequestBehavior.AllowGet
; sem esse MVC estava retornando um erro HTTP 500 (comdataType: json
especificado no cliente).cache: false
à chamada $ .ajax, caso contrário, você obterá respostas HTTP 304 (em vez de respostas HTTP 200) e o servidor não processará sua solicitação.Amostra JQuery:
Código MVC de amostra:
fonte
Para responder a outra metade da pergunta, você pode ligar para:
quando você deseja retornar HTML parcial. Você só precisará encontrar uma maneira de decidir se a solicitação deseja JSON ou HTML, talvez com base em uma parte / parâmetro da URL.
fonte
Solução alternativa com estrutura de codificação
Ação return json
Controlador
Página de barbear
Ação return html
Controlador
Página de barbear
fonte
Você pode dar uma olhada neste artigo muito útil, que aborda isso muito bem!
Apenas pensei que isso poderia ajudar as pessoas a procurar uma boa solução para esse problema.
http://weblogs.asp.net/rashid/archive/2009/04/15/adaptive-rendering-in-asp-net-mvc.aspx
fonte
PartialViewResult e JSONReuslt herdam da classe base ActionResult. portanto, se o tipo de retorno for decidido, declare dinamicamente a saída do método como ActionResult.
fonte
Para as pessoas que fizeram o upgrade para o MVC 3, aqui está uma maneira interessante de usar o MVC3 e o Json
fonte
fonte
Abordagem flexível para produzir diferentes resultados com base na solicitação
O
Request.IsAjaxRequest()
método é bastante simples: ele simplesmente verifica nos cabeçalhos HTTP a solicitação de entrada para ver se o valor do cabeçalho X-Requested-With éXMLHttpRequest
, que é automaticamente anexado pela maioria dos navegadores e estruturas AJAX.Método de extensão personalizado para verificar se a solicitação é para json ou não, para que possamos chamá-la de qualquer lugar, assim como o método de extensão Request.IsAjaxRequest ():
Fonte: https://www.safaribooksonline.com/library/view/programming-aspnet-mvc/9781449321932/ch06.html#_javascript_rendering
fonte