【问题标题】:How to display Windows.Form.MessageBox in ASP.NET web application?如何在 ASP.NET Web 应用程序中显示 Windows.Form.MessageBox?
【发布时间】:2011-06-14 08:30:45
【问题描述】:

我想在 MessageBox 中显示我的验证错误消息。我有四个文本框和一个按钮控件。当我单击按钮控件时,没有文本的 TextBoxes 将显示在 MessageBox 中。我几乎做到了,但问题是当我单击按钮时,MessageBox 会作为最小化窗口打开。所以最终用户很难实现。我想在单击按钮时向用户显示 MessageBox。

这是我的代码,在按钮点击事件中

ErrorMsg="";

if (TextBox1.Text == "")
{
    ErrorMsg += "Name is required!";
    ErrorMsg += "\n";
}
if (TextBox2.Text == "")
{
    ErrorMsg += "Address is required!";
    ErrorMsg += "\n";
}
if (TextBox3.Text == "")
{
    ErrorMsg += "Phone No. is required!";
    ErrorMsg += "\n";
}
if (TextBox4.Text == "")
{
    ErrorMsg += "City is required!";
    ErrorMsg += "\n";
}
if (ErrorMsg.Length == 0)
{
     //Some Code
}
else
{
    MessageBox.Show(ErrorMsg, "Existing Address", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

提前谢谢...

【问题讨论】:

    标签: c# asp.net messagebox


    【解决方案1】:

    您不能在 ASP.NET 应用程序中使用 Windows MessageBox。这没有任何意义。 ASP.NET 吐出 HTML/javascript/CSS,因此您应该使用它来通知用户出现问题。因此,例如在 ASP.NET 应用程序中,您可以使用 RegisterStartupScript 方法将 javascript 注入页面,该页面将在页面加载时执行,并使用 alert 函数:

    ScriptManager.RegisterStartupScript(this, GetType(), "error", "alert('oops');", true);
    

    在 ASP.NET 应用程序中执行验证的其他更传统的技术包括使用 validation controls

    【讨论】:

    • 到目前为止,我使用了验证控件。但是用户要求我显示为 MessageBox。
    • @thevan,那么您将不得不向用户解释 ASP.NET 和 WinForms 不是一回事,他所问的只是没有意义,因为 ASP.NET 应用程序在服务器。祝您好运,因为您似乎有一个具有有趣期望的客户:-)
    • 我怀疑用户想要的是警报而不是 MessageBox,但作为用户并没有意识到差异,因为从用户体验的角度来看,它们并没有那么不同
    • 我已经测试过并且可以正常工作(asp.net 中的 Windows 消息框)...您能解释一下为什么我们不能使用它吗?请作为初学者解释:)
    【解决方案2】:

    创建一个类似的函数

    private void MessageBoxShow(Page page, string message)
    {
        Literal ltr = new Literal();
        ltr.Text = @"<script type='text/javascript'> alert('" + message + "') </script>";
        page.Controls.Add(ltr);
    }
    

    并从任何 .aspx 页面调用它,例如

    MessageBoxShow(this,message);
    

    重要的是,如果你使用UserControl,那么你需要将函数参数Page更改为UserControl。

    【讨论】:

    • 你应该使用RegisterClientScriptBlock()而不是Controls.Add()
    • @abatishchev 实际上我不太擅长 asp.net。我发布了这个,因为我正在使用它,对我来说很好 :) 如果你说你应该使用,我说:是的,我应该 :)
    【解决方案3】:

    你为什么不直接使用Ajax control toolkit

    然后您可以调整弹出窗口的内容,我相信它比 windows 样式的弹出消息更具侵入性。

    【讨论】:

      【解决方案4】:

      我们甚至可以在 ASP.Net WEB 应用程序中使用 windows 消息框 需要执行以下步骤

      1. 在 Visual Studio 中打开解决方案资源管理器并右键单击参考 > 添加参考
      2. 搜索 system.windows 和 system.windows.form 程序集并添加它们
      3. 然后在要使用消息框的 .aspx 表单中使用 system.windows 和 system.windows.form 添加程序集 那么您就可以在您的网页中使用所有功能,例如 Windows 应用程序

      【讨论】:

        猜你喜欢
        • 2016-06-22
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 2010-10-13
        • 1970-01-01
        • 2012-01-02
        • 2011-07-27
        • 2012-03-27
        相关资源
        最近更新 更多