2012-01-08 31 views
8

Tengo una página de vistaasp.net mvc PartialView @ Ajax.ActionLink no funciona

mi página de vista

<div id="beReplaced"> 
    @Ajax.ActionLink("please click on me to bring the partial view", 
        "PatrialViewToBeCalled", 
        new AjaxOptions() 
         {UpdateTargetId = "beReplaced", 
         InsertionMode = InsertionMode.InsertAfter, 
         HttpMethod="Get", 
         LoadingElementId = "prgress" }) 
</div> 

tengo un controlador

public PartialViewResult PatrialViewToBeCalled() 
{ 
    var customer = db.Customers.First(); 

    return PartialView("PartialViewThatMustBeShow",customer); 
} 

pero cuando hago clic en el enlace generado me lleva a una nueva página en lugar de reemplazando o agregando la vista parcial a la etiqueta div.

¿Cuál es el problema?

+3

Encontré la solución. El problema se debió al archivo no intrusivo dañado ajax.min.js. – 1AmirJalali

+0

Debe publicar esto como una solución y cerrar este – Shenaniganz

+0

¿qué quiere decir con el cierre? ¿cómo debería cerrarlo? – 1AmirJalali

Respuesta

1

Encontré la solución. El problema se debió al archivo no intrusivo dañado ajax.min.js.

0

Si tiene jQuery cargado en su página, ¿por qué no utilizar el método simple get/load de jquery para obtener la vista parcial?

<div id="beReplaced"> 
    <a href="#" id="lnk1">please click on me to bring the partial view</a> 
</div> 

Javascript

$("#lnk1").click(function(){ 
$.get('/controller/PatrialViewToBeCalled', function(data) { 
     $('#beReplaced').html(data); 
     }); 
}); 
+0

Porque intento mantener mi vista limpia y hacerla lo más pequeña posible, y los ayudantes de Ajax en MVC tienen la capacidad de hacer declaraciones complejas. – 1AmirJalali

+1

Si quiero mantener mis puntos de vista limpios, me quedaré con un principio discreto. Siento que este enfoque jQuery es mucho más limpio que dar los métodos de parámetros ajax dentro de la vista (donde me gustaría ver solo marcas HTML solo tanto como pueda)) – Shyju

+0

¿Downuidor? importa comentar? – Shyju

10

Podría haber sido que estaban perdiendo el:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

En la vista principal. Esto le dice a la vista principal que reconozca al ajax helper.

+0

+1 Eso lo resolvió para mí, muchas gracias. – EM0

0

Si está trabajando con ASP .NET MVC 4 Asegúrese de que

@Scripts.Render("~/bundles/jquery") 

está en el extremo de la etiqueta del cuerpo también.

 @Scripts.Render("~/bundles/jquery") 
     @RenderSection("scripts", required: false) 
    </body> 
</html> 
0

He estado trabajando en ello por mucho tiempo, pensando que no funcionó. Ver el origen de la página tampoco mostró nada.

Eventualmente, descubrí que realmente funcionó cuando vi las solicitudes exitosas en la consola de Firebug. Solo lo estaba mostrando fuera de la pantalla. En la pestaña HTML de Firebug finalmente encontré el resultado, aunque no aparece en el origen de la página.

Cuestiones relacionadas