65.9K
CodeProject 正在变化。 阅读更多。
Home

支持 AJAX 的消息框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.73/5 (53投票s)

2009年9月15日

CPOL

2分钟阅读

viewsIcon

230765

downloadIcon

7797

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,类型为 enmMessageTypeenmMessageType 有四个项目:ErrorSuccessAttentionInfo

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 的所有内容都位于一个名为 udpMsjUpdatePanel 内部,该 UpdatePanel 具有 ConditionalUpdateMode。并且 usercontrolOnPreRender 状态,如果添加了任何消息,则通过调用 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); 
}

这将显示以下消息

InfoMessage

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

MessageType 设置为 ERROR

ErrorMessage

MessageType 设置为 ATTENTION

AttentionMessage

MessageType 设置为 SUCCESS

SuccessMessage

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);
}

当添加多个消息时

MultipleMessages

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 如下所示

Confirm1Message

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

Confirm2Message

就这样,尽情享受吧。本文附带一个简单的应用程序。

历史

  • 2009 年 9 月 15 日:首次发布
© . All rights reserved.