支持 AJAX 的消息框






4.73/5 (53投票s)
MessageBox 用户控件,已准备好 AJAX 并支持确认
引言
如你所知,MessageBox
,我的意思是向用户显示弹出消息并不难,但在 Web 应用程序中存在一些复杂的问题,因为 ASP.NET 中没有“MessageBox.Show(...)
”选项。希望在本文结束时,我们能够实现类似的功能。
Using the Code
为了更好地了解我们的目标,以下是我们将要生成的 MessageBox
的功能列表
MessageBox
应该具有简单的用法。我们应该用一行代码显示消息。MessageBox
应该为模态。也就是说,消息打开时,用户不应能够执行任何其他操作。MessageBox
应该支持多个消息。可以通过一次回发显示多个消息。MessageBox
应该根据消息类型(例如,错误消息或仅信息消息)具有不同的外观。MessageBox
应该具有确认功能。MessageBox
应该支持 AJAX。
现在我们知道了我们需要什么,让我们分析一下它的工作原理。
MessageBox
将是一个用户控件,可以通过将其添加到页面或另一个 usercontrol
来使用。一个简单的拖放操作。
首先,我们需要一个 message
类。Message
类是一个简单的类,只有两个属性:MessageText
,类型为 string
,以及 MessageType
,类型为 enmMessageType
。enmMessageType
有四个项目:Error
、Success
、Attention
和 Info
。
该 usercontrol
具有一个名为 AddMessage()
的方法。此方法有两个重载
public void AddMessage(string msgText, enmMessageType type){....}
public void AddMessage(string msgText,
enmMessageType type, bool postPage, bool showCancelButton, string args){...}
关于此 usercontrol
的另一个重要事项是,它启用了 AJAX。usercontrol
的所有内容都位于一个名为 udpMsj
的 UpdatePanel
内部,该 UpdatePanel
具有 Conditional
的 UpdateMode
。并且 usercontrol
的 OnPreRender
状态,如果添加了任何消息,则通过调用 Update()
方法更新 UpdatePanel
。 这样,只有在需要时才刷新内容。
我将不再描述这些方法和 usercontrol
的任何其他部分,而是会展示这些方法的使用方式,这将使事情更加精确。
1. 简单显示消息
protected void btnInfo_Click(object sender, EventArgs e)
{
uscMsgBox1.AddMessage("The user saved successfully but should be activated
by an administrator within 3 days.",
YaBu.MessageBox.uscMsgBox.enmMessageType.Info);
}
这将显示以下消息

只需更改 AddMessage
方法的第二个参数,即 YaBu.MessageBox.uscMsgBox.enmMessageType.Info
,消息将具有不同的外观,如下所示。
当 MessageType
设置为 ERROR
时

当 MessageType
设置为 ATTENTION
时

当 MessageType
设置为 SUCCESS
时

2. 一次显示多个消息
protected void btnMultiple_Click(object sender, EventArgs e)
{
uscMsgBox1.AddMessage("The user saved successfully.",
YaBu.MessageBox.uscMsgBox.enmMessageType.Success);
uscMsgBox1.AddMessage("The newly saved user account should be
activated by an administrator within 3 days",
YaBu.MessageBox.uscMsgBox.enmMessageType.Attention);
}
当添加多个消息时

3. 显示确认消息
最后,我们可以使用它来获取确认。但这不像上述那样简单
protected void Page_Load(object sender, EventArgs e)
{
uscMsgBox1.MsgBoxAnswered += MessageAnswered;
}
protected void btnConfirm_Click(object sender, EventArgs e)
{
uscMsgBox1.AddMessage("Do you confirm to save a new user?.",
YaBu.MessageBox.uscMsgBox.enmMessageType.Attention, true, true, txtArg.Text);
}
public void MessageAnswered(object sender, YaBu.MessageBox.uscMsgBox.MsgBoxEventArgs e)
{
if (e.Answer == YaBu.MessageBox.uscMsgBox.enmAnswer.OK)
{
uscMsgBox1.AddMessage("You have just confirmed the transaction.
The user saved successfully. You have entered " + txtArg.Text +
" as argument.", YaBu.MessageBox.uscMsgBox.enmMessageType.Info);
}
else
{
uscMsgBox1.AddMessage("You have just cancelled the transaction.",
YaBu.MessageBox.uscMsgBox.enmMessageType.Info);
}
}
用于确认的第一个 messagebox
如下所示

用户回答后,第二个如下所示

就这样,尽情享受吧。本文附带一个简单的应用程序。
历史
- 2009 年 9 月 15 日:首次发布