私は自分のサイトのモーダル ウィンドウに取り組んできました。ajax を思い通りに動作させることができないので、次のように作成しました。
モーダル ウィンドウと背景は、ページの読み込み時に非表示にしている asp パネル コントロールです (これを行うコードは arb であることに同意しますが、それを改善することはできませんでした)。
以下は、モーダルの html (事前レンダリング) です。
<asp:Panel runat="server" ID="pnlModalbg" CssClass="modalbg"> </asp:Panel>
<asp:Panel runat="server" ID="pnlModal" CssClass="modal">
<!-- Modal content goes here -->
<p>Lorem ipsum dolor sit amet...</p>
<!-- End Modal content -->
<!-- Close button -->
<div class="centeralign"><asp:Button runat="server" ID="btnCloseModal" Text="Close" CssClass="button" /></div>
<!-- End close button -->
</asp:Panel>
とてもシンプルです。これが、表示/非表示に使用しているコードです。上記のパネルは、ページの読み込み時に非表示にし、GridView.RowCommand イベントで表示する必要があります。これは問題なく機能しますが、これが最善の方法であるとは思えません。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
pnlModal.Style(HtmlTextWriterStyle.Display) = "none"
pnlModalbg.Style(HtmlTextWriterStyle.Display) = "none"
End If
End Sub
Protected Sub gvAppointments_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvAppointments.RowCommand
If e.CommandName = "ViewAppt" Then
lblAppointmentId.Text = e.CommandArgument
GetDetails()
pnlModal.Style(HtmlTextWriterStyle.Display) = "block"
pnlModalbg.Style(HtmlTextWriterStyle.Display) = "block"
End If
End Sub
Protected Sub btnCloseModal_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCloseModal.Click
pnlModalbg.Style(HtmlTextWriterStyle.Display) = "none"
pnlModal.Style(HtmlTextWriterStyle.Display) = "none"
End Sub
ここからが本当の問題です。CSS。これにより、モーダル ウィンドウは、画面の解像度に関係なく、ブラウザー ウィンドウの上端から 150 ピクセル、ブラウザー ウィンドウの左端から 450 ピクセルの位置に配置されます。そうではありません。水平方向の配置は、テストしたすべての画面で異なります。
margin: 150px auto;
理想的には、配置のためにクラスでマージン (できれば )を使用したいのです.modal
が、絶対配置がないと、ページ コンテンツの残りの部分に常に詰め込まれて表示されます。また、.modalbg
パネルはモーダル ウィンドウ自体の上に表示されます。適用.modal {z-index: 9999;}
して.modalbg {z-index: -1;}
役立ちますが、modalbg はページ上の他の要素の背後にあるように見え、z-index 値を変更してもこれは修正されません。
.modal
{
border: 2px solid #014073;
border-radius: 5px;
left: 450px;
top: 150px;
display: none;
position: absolute;
background: #fff;
padding: 10px;
}
.modalbg
{
height: 100%;
width: 100%;
position: absolute;
top: 0;
left: 0;
background: #000;
-moz-opacity:.30;
filter:alpha(opacity=30);
opacity:.30;
display: none;
}
サーバー コードでディスプレイの CSS を変更しなければならないことは気にしませんが、CSS の問題に関するヘルプは大歓迎です。