1

いくつかの設定を含むモデルを取得する部分ビューを呼び出す MVC3 ビューがあります。以下のコードを見つけることができます。

ウィンドウのサイズが変更されるたびに、ダイアログ ボックス全体のサイズが変更され、最初のコンテンツが消える理由がわかりません。

さまざまな「センタリング」機能を試しましたが、すべて同じ出力が得られました。私はIE9を使用しています。

<div id="dialog">  
    <p>@Model.Message</p>  
</div>  

<script language="javascript" type="text/javascript">
    $(function () {
        $('#dialog').dialog({
            autoOpen: true,
            title: "@Model.Title",
            show: "blind",
            width: "@Model.Width",
            height: "@Model.Height",
            buttons: {"Ok": function () { $(this).dialog("close"); }
            },
            close: function(event, ui) {
                @if (!string.IsNullOrEmpty(Model.ReturnUrl))
                {
                    @:location.href = "@Url.Action("" + @Model.Action + "", "" + @Model.Controller + "", new { returnUrl = "" + @Model.ReturnUrl + "" })"
                }
                else { 
                    @:close: function(event, ui) { $(this).close(); }
                }
            },
            modal: true,
            resizable: false     
        });
    });  

 jQuery.fn.center = function () {
        this.css("position","absolute");
        this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
        this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
        return this;
    }

$(window).resize(function(){
    $("#dialog").center();
 });

私は何を間違っていますか?

4

1 に答える 1

0

セレクターとして使用するダイアログ要素がダイアログ ウィジェットの親ではないことを認識していません。要素はラップされ、セレクター要素がコンテンツ領域になります。

外側のラッパーには class="ui-dialog" があります。プラグイン関数のターゲット$(this).closest('.ui-dialog')で、位置を調整します。position:absolute作成時にすでに設定されています。

于 2012-06-19T00:27:36.837 に答える