ASP.NET MVC JavaScript na exibição Controles do usuário renderizados através da solicitação regular do navegador e solicitação de Ajax

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

Pergunta

Eu tenho esse código em alguns dos meus arquivos 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 disso rel = "ShadowBox ..." lá. Isso é para conectar o clone do ShadowBox Lightbox para este ActionLink.

Isso funciona bem quando o usuário solicita uma página que contém esse controle do usuário através da solicitação normal do navegador. Mas também renderizo/construo essas visualizações controla as solicitações do AJAX. Por exemplo, eu faria solicitação para/widget/renderStoTring/... usando o método jQuery .ajax () e ele retornaria o código HTML para esse controle. Isso funciona bem e torna o código multa. Eu então inseriria (anexar) o resultado a uma div em uma página de onde a solicitação do Ajax foi feita. Isso também funciona bem e o HTML retornado é anexado. O único problema é - o ShadowBox não está conectado. Mesmo que o código seja renderizado.

Parece que exige recarregar a página (F5) sempre para conectar a caixa de sombras. Como estou fazendo Ajax Get e Instant Append para me livrar de ter que fazer uma ida e volta, eu também gostaria que o ShadowBox se conectasse sem atualizar.

alguém pode me ajudar com isso? obrigada

ATUALIZAR:

Sim, eu tenho isso no meu site.

<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>

Como faço para iniciar o ShadowBox novamente após a chamada do Ajax?

Foi útil?

Solução 2

Acabei de encontrar a solução aqui

// 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", {});

Outras dicas

Existem muitos plugins de caixa de sombra ... qual você está usando? (Não posso lhe dar código exato sem ele.) De qualquer forma, imagino que você tenha algo em seu $(document).ready(function () { ... }); Isso diz a Shadowbox Plowningin para se ligar. Você precisa ligar para isso novamente após a chamada do Ajax.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top