2012-06-20 44 views
12

Estoy usando MVC C# junto con Jquery.Actualizando vista parcial con Jquery en ASP.NET MVC C#

Tengo una vista parcial en una página bastante grande que tiene varias pestañas.

Al hacer clic en una casilla de verificación, me gusta actualizar la vista parcial DENTRO del formulario. Lo que quiero decir en cambio, es sólo la vista parcial

Aquí está mi código en Jquery:

$('#activelist,#inactivelist').change(function() { 

     var status = 'inactive'; 
     window.location.href = '@Url.Action("Skits","KitSection")' + '?id=' + id+ '&status=' + status; 

    }); 

Cualquier idea sobre cómo podría actualizar la vista parcial dentro de un formulario en términos de cómo iba a hacer una llamar a ella?

Aquí está el código para el PartialView

 return PartialView(Kits); 

Como se ha mencionado, lo que veo es sólo la visión parcial que se muestra y no todo el formulario.

Respuesta

26

window.location.href volverá a cargar toda la página. Necesita volver a cargar una parte de su página sin una recarga completa. Podemos usar jQuery ajax para hacer esto. Descubramos qué selector jQuery puede usar para obtener la Vista parcial.

Por ejemplo, supongamos que el marcado HTML es como esta en la forma principal (vista)

<div> 
    <p>Some content</p> 
    <div id="myPartialViewContainer"> 
     @Html.Partial("_FeaturedProduct") 
    </div> 
    <div>Some other content</div> 
</div> 

Y aquí el DIV con IDmyPartialViewContainer es el div recipiente que contiene el contenido de la partial view .Así lo haremos simplemente vuelva a cargar el contenido de ese div utilizando jQuery load método

$(function(){ 

    $('#activelist,#inactivelist').change(function() { 
     var id="someval"; 
     var status = 'inactive'; 
     $("#myPartialViewContainer").load('@Url.Action("Skits","KitSection")' + '?id=' + id+ '&status=' + status) 
    }); 

}); 
3

Está redirigiendo al usuario, a través de la propiedad window.location.href, a la URL de su parcial, de ahí que solo se muestre ese parcial.

En su lugar, debe hacer una llamada AJAX al parcial para recuperar su HTML y luego usar algo como el método .append para agregarlo al elemento del contenedor al que desee que se agregue.

EDITAR: El método .load() jQuery ajax es en realidad mejor para esta situación específica.

Cuestiones relacionadas