MessageBox.Show()在ASP.NET中不起作用

时间:2011-08-01 20:14:03

标签: asp.net winforms

我正在尝试使用MessageBox.Show显示一些文本,如下所示在ASP.NET的page_load事件中。在任何人跳过这个案例之前我为什么要在ASP.NET中使用它之前,只能在我自己的开发盒上进行调试以满足特殊需要。应用程序中有对System.Windows.Forms的引用。

几年前我用它,所以我知道WinForm的MessageBox有效。我使用的是.NET 4.0和VS 2010.我认为与此功能相关的任何内容都没有改变。

MessageBox.Show("Message", "Caption", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); //used also ServiceNotification option

为什么消息框不显示的任何想法?我在代码中只有那一行。

此外:

我非常了解消息框的含义。这只是一个临时的调试问题。该生产线不会投入生产。我无法访问javascript。请把你的想法解释为什么它不起作用而不是为什么我不应该使用它。我之前在2.0中使用它,它确实有效。我想知道新的.NET是否改变了什么,或者我误用了该选项。

直接回答:它适用于Visual Studio的Web服务器,而不适用于IIS。

3 个答案:

答案 0 :(得分:5)

Web应用程序托管在没有桌面的进程中,因此您无法看到任何消息框。

答案 1 :(得分:1)

@Tony,如果您将System.Winform.dll添加到您的参考,那么您将能够在您的开发机器上调用消息box.show。但是,当您将其部署到某个实时服务器时,它将无法正常工作。因此,您需要使用javascript警报。为此你可以使用这个

 private void ShowMessage(string message)     
   {
      ScriptManager.RegisterClientScriptBlock(control, GetType(),"key","string.format("alert('{0}');",message),true);
   }

答案 2 :(得分:0)

回到.Net 2.0天,你可以通过在你的using语句中加入system.windows(我认为)来做到这一点。

然后,在该方法中,它将是system.windows.forms.Messagebox.show(“foo”);

我不会假设告诉你“你做错了”......

请注意,这只会显示在服务器上,可能会导致生产环境出现问题。

alert()更好,console.log()更好。