2010-02-18 12 views
0

我在我的一些ASCX文件有這樣的代碼:asp.net的MVC的JavaScript在瀏覽用戶控件

<%=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" 
})%> 

注意到,相對=的「太極拳......」那裏。這是爲此ActionLink連接ShadowBox Lightbox克隆。

當用戶通過普通瀏覽器請求請求包含此用戶控件的頁面時,此工作正常。但我也通過AJAX請求呈現/構建了這些View用戶控件。例如,我會使用jQuery .ajax()方法向/ Widget/RenderToString/...發送請求,並且它會返回該控件的HTML代碼。這工作正常,它呈現代碼罰款。然後,我會將結果插入(附加)到一個頁面中的一個DIV中,從那裏發出AJAX請求。這也可以正常工作,並且返回的HTML被附加。唯一的問題是 - ShadowBox沒有連線。即使它的代碼被渲染。

似乎它每次都需要頁面重新加載(F5)來連接ShadowBox。由於我在做AJAX GET和即時追加以避免必須進行服務器往返,因此我還希望ShadowBox在不刷新的情況下進行連線。

有人可以幫我嗎?謝謝

UPDATE:

是的,我有這個在我的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> 

如何AJAX後重新初始化的太極拳打電話?

回答

0

就找到了解決辦法here

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

有很多shadowbox插件...你使用哪一個? (如果沒有它,我無法給你確切的代碼。)無論如何,我想你的$(document).ready(function() { ... });中有一些東西告訴shadowbox plungin綁定自己。你需要在AJAX調用之後再次調用它。