ModalPopupExtender Hault执行直到Ok点击?

时间:2013-10-03 03:58:15

标签: c# asp.net ajaxcontroltoolkit modalpopupextender

也许我误解了控件,或者很可能没有正确实现它,但我使用的是ModalPopupExtender,就像我想在桌面开发中使用MessageBox一样。我遇到的问题是,一旦我调用ModalPopupExtender的Show()方法,它就会继续执行服务器端代码,尽管用户还没有点击设置为OkControlID的按钮。这是正常的行为,还是有一种方法可以在单击OkControlID之前执行代码执行。要指定,我不想在按钮单击处理程序中创建另一个事件,因为此弹出窗口是内联的。这是我的代码 - 任何建议都表示赞赏。

我的控制:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ModalMessage.ascx.cs" Inherits="LB.ModalMessage" %>
<asp:Button ID="btnPopup" runat="server" style="display: none;"/>

<ajaxToolkit:ModalPopupExtender ID="ModalMessageExtender" runat="server"
OkControlID="btnOkay" PopupControlID="Panel1"
TargetControlID="btnPopup" BackgroundCssClass="modalPopupBG">
</ajaxToolkit:ModalPopupExtender>

<asp:Panel CssClass="whitebubble" ID="Panel1" style="display: none; max-width:400px;" runat="server">
<div style="padding:5px 5px 35px 5px;">
    <asp:Label ID="lblMessage" Font-Size="Medium" runat="server" ForeColor="Black"/>
    <br />
    <asp:Button runat="server" Text="Ok" Width="75px" Height="30px" ID="btnOkay" CssClass="modalButton gray modalButton"/>
</div>
</asp:Panel>

背后的控制代码:

    public void ShowMessage(string message)
    {
        this.lblMessage.Text = message;
        ModalMessageExtender.Show();
    }

我的内容页面:

<%@ Register Src="~/ModalMessage.ascx" TagName="ModalMessage" TagPrefix="mm" %>
<mm:ModalMessage runat="server" ID="mpeMessage"/>

我的内容代码背后:

mpeMessage.ShowMessage("Please enter a username before attempting to reset your password.");

更新 抱歉缺乏明确性 - 让我更清楚地提出我的问题。如果我执行以下操作:

mpeMessage.ShowMessage("Please enter a username before attempting to reset your password.");
Response.Redirect("Register.aspx");

发生重定向并且永远不会显示ModalPopupExtender。我对网络开发有些新意,所以如果我使用的是不正确的术语,请原谅我。但实际上,我希望在代码后面执行代码以等待用户单击“确定”。我正试图取代这样的东西:

ScriptManager.RegisterStartupScript(this, typeof(string), "Message", "alert('Your new account has been created!'); window.location='" + continueUrl + "';", true);

看起来有点好看,而且因为我已经做了回发,我认为以编程方式调用ModalPopupExtender会很好。希望这能解决我的问题。感谢大家到目前为止的回复。

2 个答案:

答案 0 :(得分:0)

您可以使用验证控件来检查字段是否正确填充 有关更多详细信息,请查看以下链接:

http://www.w3schools.com/aspnet/aspnet_refvalidationcontrols.asp

http://msdn.microsoft.com/en-us/library/aa479013.aspx

答案 1 :(得分:0)

如果我正确理解您的查询,那么您希望在用户没有点击modelpopup上的“ok”按钮之前,用户不应该点击页面。

如果你想要这个,那么在你的modelpopup控件中添加 PopupDragHandleControlID =“Panel1”

<ajaxToolkit:ModalPopupExtender ID="ModalMessageExtender" runat="server"
OkControlID="btnOkay" PopupControlID="Panel1" PopupDragHandleControlID="Panel1"
TargetControlID="btnPopup" BackgroundCssClass="modalPopupBG">
</ajaxToolkit:ModalPopupExtender>

<强>更新

只需将 Response.Redirect(“Register.aspx”); 替换为 btnOkay 点击事件。

在aspx页面上 -

<asp:Button runat="server" Text="Ok" Width="75px" Height="30px" ID="btnOkay"  OnClick="btnOkay_Click" CssClass="modalButton gray modalButton"/>

在aspx.cs页面上 -

protected void btnOkay_Click(object sender, EventArgs e)
{
    Response.Redirect("Register.aspx");
}

然后用户不会点击“确定”按钮。他/她无法重定向到“注册页面”。