ASP.NET Web应用程序消息框

时间:2012-03-15 12:55:52

标签: c# asp.net web-applications code-behind messagebox

在asp.net的Windows窗体应用程序中,您可以使用C#代码:

MessageBox.Show("Here is my message");

asp.net Web应用程序中是否有任何等效内容? 我可以从后面的C#代码中调用一些可以向用户显示消息框的内容吗?

示例用法:我有一个按钮,用于在后面的代码中加载文件。加载文件或出现错误时,我想向用户弹出一条消息,说明结果。

有关于此的任何想法吗?

14 个答案:

答案 0 :(得分:63)

您想使用提醒。不幸的是,它不如windows窗体那么好。

ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable + "');", true);

此处与此问题类似:http://forums.asp.net/t/1461308.aspx/1

答案 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处理项目的课程中获取课程的说明:

  1. 如果您的项目中没有 App_Code 文件夹,请创建它。
  2. 右键单击 App_Code 文件夹并创建一个类。将其命名为 MessageBox.cs
  3. 复制 MessageBox.cs 文件(from the attached code)中的文本并将其粘贴到 MessageBox.cs 文件中。
  4. 与第2步和第2步相同。 3为 MessageBoxCore.cs 文件。
  5. 重要提示:右键单击每个文件 MessageBox.cs MessageBoxCore.cs 并确保'Build Action'设置为 Compile
  6. 将此代码添加到您要显示消息框的 aspx 页面中:

    <asp:Literal ID="PopupBox" runat="server"></asp:Literal>
    
  7. 在您想要决定的 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);
    
  8. 将此方法添加到 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;
    }
    
  9. 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.
    
  10. aspx 页面上添加此行:

    <%@ Register src="~/MessageBoxUserControl.ascx" tagname="MessageBoxUserControl" tagprefix="uc1" %>
    
  11. aspx 页面中添加此行(如果有的话,在 asp:Content 标记内)

    <uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
    
  12. 将上述Microsoft项目中的图像文件1.jpg, 2.jpg, 3.jpg, 4.jpg保存到~/Images/路径中。

  13. 完成

  14. 希望它有所帮助。

    巴勃罗

答案 3 :(得分:3)

在ASP.NET中创建客户端消息框有多种选择 - 例如,请参阅hereherehere ...

答案 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");

我尝试了它并且有效。

祝你好运。