我的一些 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"
})%>
注意那里的 rel="shadowbox..." 。这是为这个 ActionLink 连接 ShadowBox Lightbox 克隆。
当用户通过普通浏览器请求请求包含此用户控件的页面时,这可以正常工作。但我也通过 AJAX 请求渲染/构建那些 View User 控件。例如,我会使用 jQuery .ajax() 方法向 /Widget/RenderToString/... 发出请求,它会返回该控件的 HTML 代码。这可以正常工作,并且可以很好地呈现代码。然后,我会将结果插入(附加)到发出 AJAX 请求的页面中的 DIV 中。这也可以正常工作,并且返回的 HTML 会被附加。唯一的问题是 - ShadowBox 没有连接。即使它的代码被渲染。
似乎每次都需要重新加载页面 (F5) 才能连接 ShadowBox。由于我正在执行 AJAX GET 和即时附加以摆脱必须进行服务器往返的操作,因此我还希望 ShadowBox 无需刷新即可连接。
有人可以帮我吗?谢谢
更新:
是的,我的 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 调用后如何再次初始化 Shadowbox?