私の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 が配線されていないことです。そのコードはレンダリングされますが。
ShadowBox を接続するたびにページのリロード (F5) が必要なようです。私は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 を再度初期化するにはどうすればよいですか?