也许我误解了控件,或者很可能没有正确实现它,但我使用的是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会很好。希望这能解决我的问题。感谢大家到目前为止的回复。
答案 0 :(得分:0)
您可以使用验证控件来检查字段是否正确填充 有关更多详细信息,请查看以下链接:
http://www.w3schools.com/aspnet/aspnet_refvalidationcontrols.asp
答案 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");
}
然后用户不会点击“确定”按钮。他/她无法重定向到“注册页面”。