asp.net mvc JavaScript en controles de usuario Ver prestados a través petición del navegador regular y petición AJAX

StackOverflow https://stackoverflow.com/questions/2285577

Pregunta

Tengo este código en algunos de mis archivos ASCX:

<%=Html.ActionLink(Resources.Localize.Routes_WidgetsEdit, "Edit", "Widget", 
new { contentType = Model.ContentType, widgetSlug = Model.Slug, modal=true},
new
{
  rel = "shadowbox;height=600;width=700",
  title = Resources.Localize.Routes_WidgetsEdit,
  @class = "editWidget"
})%>

Tome nota de que rel = "shadowbox ..." allí. Esto es para cablear ShadowBox la mesa de luz para este clon ActionLink.

Esto funciona bien cuando el usuario solicita una página que contiene este control de usuario a través petición del navegador normal. Pero también rinde / construyo los controles de usuario Ver Trough peticiones AJAX. Por ejemplo, me gustaría hacer ... método para / Widget / RenderToString / .ajax usando jQuery () petición y sería devolver el código HTML para ese control. Esto funciona muy bien y hace que la multa código. Me continuación, insertar (append) el resultado de un DIV en una página desde donde se hizo la petición AJAX. Esto también funciona muy bien y el HTML devuelto se adjunta. El único problema es - ShadowBox no está cableada. A pesar de que el código para que se dicte.

Parece que requiere recarga de la página (F5) cada vez que el alambre ShadowBox arriba. Desde que estoy haciendo AJAX GET y append instantánea para deshacerse de tener que hacer una ida y vuelta del servidor, también me gustaría que ShadowBox a cablear sin hacer refresco.

Puede alguien ayudarme con eso? Gracias

ACTUALIZACIÓN:

Sí, tengo esto en mi cabeza Site.Master:

<script src="<%=Url.Content("~/Scripts/shadowbox-build-3.0rc1/shadowbox.js") %>" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        // insert functions calls here that provide some default behaviour
        externalLinks();
    });

    Shadowbox.init({
        language: "en",
        players: ["img", "html", "iframe"],
        onClose: function() { location.reload(true) }
    });
</script>

¿Cómo INIT la shadowbox de nuevo después de AJAX llamo?

¿Fue útil?

Solución 2

Sólo encontrado la solución aquí

// call this after adding the new HTML to the page
// set up all anchor elements with a "editWidget" class to work with Shadowbox
Shadowbox.setup("a.editWidget", {});

Otros consejos

Hay muchos plugins shadowbox ... que se está utilizando? (No puedo darle código exacto y sin ella). En cualquier caso me imagine que tiene algo en su $(document).ready(function () { ... }); que dice plungin shadowbox para unirse a sí mismo. Tiene que llamar de nuevo después de la llamada AJAX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top