Inquiridor
jQuery Partial View

Pergunta
-
Gostaria de chamar com jQuery uma partial view que não tem controller e nem action,
o código que estou tentando é o seguinte, mas não esta dando certo, alguém sabe de alguma alternativa pra carregar a partial view?
<script type="text/javascript"> $(document).ready(function () { // initialise plugins $(function () { $('#div_centrotrabalho').load('@Url.Content("~/Areas/Sistema/Views/Shared/_CentroTrabalho.cshtml")'); }); }); </script> <div id="div_centrotrabalho"></div>
já tentei usar:
@Html.Partial("~/Areas/Sistema/Views/Shared/_MenuOperacoes.cshtml")
só que dessa forma o sistema só carrega após carregar o MenuOperacoes, então gostaria de usar jQuery pra carregar via ajax.
Todas as Respostas
-
Olá, Pablotdv
Partial Views não podem ser acessadas diretamente. O Framework que é responsável por renderizá-las através do ActionResult.
Em resumo, você deve criar um método Action e passar a sua URL como argumento para o método ajax.$('#div_centrotrabalho').load('@Url.Action("Action","Controller")');
- Sugerido como Resposta Leonardo Lima da Silva sábado, 13 de abril de 2013 18:02
- Não Sugerido como Resposta Pablotdv sábado, 13 de abril de 2013 23:14
-
-
Crie uma Action no seu controller com o mesmo nome da PartialView.
Uma partialview não pode ser chamada diretamente via javascript mas se você colocar uma Action no seu controller a mesma será renderizada corretamente pois o javascript vai encontrar uma url válida para obter a requisição/resposta http.
-
João, dessa forma que tu explica funciona, porém por estar usando o plugin MvcSiteMapProvider quando faço uma requição via Controller/Action usando o jQuery o meu currentNode fica sempre apontado para o que foi feito a requisição pelo javascript.
por exemplo, ao acessar o caminho http://localhost/Sistema/Pesquisa
meu current node seria o Pesquisa, mas se eu usar o código a seguir para renderizar minha partial View o meu CurrentNode fica no MontaMenu.
$('#div_centrotrabalho').load('@Url.Action("MontaMenu","Menu")');
-
Olá Pablo,
O ASP.NET impede que todo arquivo que comece com underline (_ALGUMACOISA) seja acessado diretamente. No seu caso você deveria fazer um action no seu controller, exemplo:
public ActionResult CentroDeTrabalho() { return PartialView("~/Views/Shared/_CentroDeTrabalho"); }
Apos isso você deve carregar seu action via jquery, e printa-lo na tela:
$.ajax({ url: '@Url.Content("~/Controller/CentroDeTrabalho")', success: function (view) { $('#div_centrotrabalho').html(view); } });
Não testei, mas deve funcionar ;)
Ao infinito e além!
-
-
-
-
-