在asp.net的Windows窗体应用程序中,您可以使用C#代码:
MessageBox.Show("Here is my message");
asp.net Web应用程序中是否有任何等效内容? 我可以从后面的C#代码中调用一些可以向用户显示消息框的内容吗?
示例用法:我有一个按钮,用于在后面的代码中加载文件。加载文件或出现错误时,我想向用户弹出一条消息,说明结果。
有关于此的任何想法吗?
答案 0 :(得分:63)
您想使用提醒。不幸的是,它不如windows窗体那么好。
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable + "');", true);
答案 1 :(得分:15)
或者在解决方案中创建这样的方法:
public static class MessageBox {
public static void Show(this Page Page, String Message) {
Page.ClientScript.RegisterStartupScript(
Page.GetType(),
"MessageBox",
"<script language='javascript'>alert('" + Message + "');</script>"
);
}
}
然后你就可以使用它:
MessageBox.Show("Here is my message");
答案 2 :(得分:9)
仅供记录。
我认为Here is a link from Microsoft是在 ASP.Net
中展示 MessageBox 的最佳方式此外,它还提供是和否等选项。
有关如何从link处理项目的课程中获取课程的说明:
将此代码添加到您要显示消息框的 aspx 页面中:
<asp:Literal ID="PopupBox" runat="server"></asp:Literal>
在您想要决定的 cs 页面上添加此代码:
string title = "My box title goes here";
string text = "Do you want to Update this record?";
MessageBox messageBox = new MessageBox(text, title, MessageBox.MessageBoxIcons.Question, MessageBox.MessageBoxButtons.YesOrNo, MessageBox.MessageBoxStyle.StyleA);
messageBox.SuccessEvent.Add("YesModClick");
PopupBox.Text = messageBox.Show(this);
将此方法添加到 cs 页面。这是用户单击“是”时将执行的操作。您无需为NoClick
方法创建另一个方法。
[WebMethod]
public static string YesModClick(object sender, EventArgs e)
{
string strToRtn = "";
// The code that you want to execute when the user clicked yes goes here
return strToRtn;
}
将 WebUserControl1.ascx 文件添加到根路径并将此代码添加到文件中:
<link href="~/Styles/MessageBox.css" rel="stylesheet" type="text/css" />
<div id="result"></div>
<asp:ScriptManager runat="server" ID="scriptManager" EnablePageMethods="True">
</asp:ScriptManager> //<-- Make sure you only have one ScriptManager on your aspx page. Remove the one on your aspx page if you already have one.
在 aspx 页面上添加此行:
<%@ Register src="~/MessageBoxUserControl.ascx" tagname="MessageBoxUserControl" tagprefix="uc1" %>
在 aspx 页面中添加此行(如果有的话,在 asp:Content 标记内)
<uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
将上述Microsoft项目中的图像文件1.jpg, 2.jpg, 3.jpg, 4.jpg
保存到~/Images/
路径中。
完成
希望它有所帮助。
巴勃罗
答案 3 :(得分:3)
答案 4 :(得分:2)
不是真的。服务器端代码正在服务器上发生 - 您可以使用javascript在客户端向用户显示内容,但它显然只会在客户端执行。这是客户端服务器Web技术的本质。收到回复后,您基本上与服务器断开连接。
答案 5 :(得分:2)
为什么不应该为此目的使用jquery弹出窗口。我使用bpopup
来实现此目的。查看更多相关内容。
http://dinbror.dk/bpopup/
答案 6 :(得分:1)
有一些解决方案;如果您对CSS感到满意,这是一个非常灵活的解决方案:
创建一个类似于&#34;消息框&#34;的适当样式Panel
,在其中添加Label
并将其Visible
属性设置为false
。然后,每当用户需要在回发后看到消息(例如按下按钮)时,从代码隐藏中将Label
s Text
属性设置为所需的错误消息并设置Panel
Visible
属性true
。
答案 7 :(得分:1)
&#39; ASP.net MessageBox
&#39;将脚本管理器添加到ASP.Net页面
<asp:scriptmanager id="ScriptManager1" runat="server" />
尝试:
{
string sMsg = "My Message";
ScriptManager.RegisterStartupScript(Page, Page.GetType, Guid.NewGuid().ToString(), "alert('" + sMsg + "')", true);
}
答案 8 :(得分:1)
正如其他人已经指出的那样,消息框将是客户端Javascript。那么问题就是如何从服务器端强制客户端JS消息框。一个简单的解决方案是将其包含在HTML中:
<script>
var data = '<%= JsData %>';
alert(data);
</script>
并从服务器端代码填充此data
:
public partial class PageName : Page
{
protected string JsData = "your message";
请注意,字符串值应该是Javascript字符串,即单行,但它可能包含转义的换行符\n
。
现在,您可以使用所有Javascript或JQuery技巧和技巧,在客户端上使用该消息文本执行任何操作,例如显示简单的alert()
,如上面的代码示例所示,或者复杂的消息框或消息横幅。
(请注意,弹出窗口有时会不受欢迎并被阻止)
另请注意,由于HTTP协议,只能显示消息以响应用户发送到服务器的HTTP请求。与WinForm应用程序不同,Web服务器无论何时认为合适,都无法将消息推送到客户端。
如果您只想显示一次消息,而不是在用户使用F5刷新页面后,您可以使用javascript代码设置和读取cookie。在任何情况下,使用此方法的好处是,它是一种从服务器获取数据到客户端上的javascript的简单方法,并且您可以使用所有javascript功能来完成您喜欢的任何操作。
答案 9 :(得分:1)
这是我今天刚刚编写的一种方法,因此我可以根据需要向页面传递尽可能多的消息框:
/// <summary>
/// Shows a basic MessageBox on the passed in page
/// </summary>
/// <param name="page">The Page object to show the message on</param>
/// <param name="message">The message to show</param>
/// <returns></returns>
public static ShowMessageBox(Page page, string message)
{
Type cstype = page.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = page.ClientScript;
// Find the first unregistered script number
int ScriptNumber = 0;
bool ScriptRegistered = false;
do
{
ScriptNumber++;
ScriptRegistered = cs.IsStartupScriptRegistered(cstype, "PopupScript" + ScriptNumber);
} while (ScriptRegistered == true);
//Execute the new script number that we found
cs.RegisterStartupScript(cstype, "PopupScript" + ScriptNumber, "alert('" + message + "');", true);
}
答案 10 :(得分:0)
您需要引用命名空间
using System.Windows.Form;
然后添加代码
protected void Button1_Click(object sender, EventArgs e)
{
MessageBox.Show(" Hi....");
}
答案 11 :(得分:-1)
如果你要包括
System.Windows.forms
作为命名空间然后它会发生冲突。 使用
btn_click()
{
System.Windows.Forms.MessageBox.Show("Hello");
}
答案 12 :(得分:-2)
右键单击解决方案资源管理器,然后选择将出现添加reference.one
对话框。在那个选择(.net)-> System.windows.form
上。导入System.Windows.Forms (vb)
并使用System.windows.forms(C#)
将其复制到您的编码中,然后撰写messagebox.show("")
。
答案 13 :(得分:-3)
只需添加命名空间:
System.Windows.forms
指向您的网络应用程序参考或任何内容,并且您可以访问:
MessageBox.Show("Here is my message");
我尝试了它并且有效。
祝你好运。