JavaScript:Alert.Show(消息)来自ASP.NET代码隐藏

时间:2011-04-28 21:19:02

标签: c# javascript asp.net

我正在阅读JavaScript: Alert.Show(message) From ASP.NET Code-behind

我正在努力实现同样的目标。所以我创建了一个这样的静态类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Text;
using System.Web.UI;

namespace Registration.DataAccess
{
    public static class Repository
    {
        /// <summary> 
        /// Shows a client-side JavaScript alert in the browser. 
        /// </summary> 
        /// <param name="message">The message to appear in the alert.</param> 
        public static void Show(string message) 
            { 
               // Cleans the message to allow single quotation marks 
               string cleanMessage = message.Replace("'", "\'"); 
               string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

               // Gets the executing web page 
               Page page = HttpContext.Current.CurrentHandler as Page; 

               // Checks if the handler is a Page and that the script isn't allready on the Page 
               if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
               { 
                 page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 
               } 
            } 
    }
}

在这一行:

string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

它向我显示错误:;预期

还有

page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 

错误:无法找到类型或命名空间名称“警报”(您是否缺少使用指令或程序集引用?)

我在这里做错了什么?

26 个答案:

答案 0 :(得分:106)

这是一个简单的方法:

Response.Write("<script>alert('Hello');</script>");

答案 1 :(得分:22)

string script = string.Format("alert('{0}');", cleanMessage);
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
{
    page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
}

答案 2 :(得分:18)

此消息直接显示警告消息

ScriptManager.RegisterStartupScript(this,GetType(),"showalert","alert('Only alert Message');",true);

此消息显示来自JavaScript函数的警告消息

ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "Showalert();", true);

这两种方法可以在c#代码后面显示警告消息

答案 3 :(得分:9)

如果您在页面上使用ScriptManager,那么您也可以尝试使用它:

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Your Message');", true);

答案 4 :(得分:5)

试试这个方法:

public static void Show(string message) 
{                
    string cleanMessage = message.Replace("'", "\'");                               
    Page page = HttpContext.Current.CurrentHandler as Page; 
    string script = string.Format("alert('{0}');", cleanMessage);
    if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
    {
        page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
    } 
} 

在Vb.Net

Public Sub Show(message As String)
    Dim cleanMessage As String = message.Replace("'", "\'")
    Dim page As Page = HttpContext.Current.CurrentHandler
    Dim script As String = String.Format("alert('{0}');", cleanMessage)
    If (page IsNot Nothing And Not page.ClientScript.IsClientScriptBlockRegistered("alert")) Then
        page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, True) ' /* addScriptTags */
    End If
End Sub

答案 5 :(得分:4)

您的代码无法编译。您已经意外终止的字符串;

string script = "<script type=";

这实际上就是你所写的。你需要逃避双引号:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

这种事情应该是非常明显的,因为你的源代码着色应该完全被填满。

答案 6 :(得分:4)

ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('ID Exists ')</script>");

答案 7 :(得分:4)

不工作可能有多个原因。

1:你是否正确地调用了你的功能?即

Repository.Show("Your alert message");

2:尝试使用RegisterStartUpScript方法而不是scriptblock。

3:如果您使用的是UpdatePanel,那么这也可能是一个问题。

检查this(topic 3.2)

答案 8 :(得分:3)

我认为,这句话:

string cleanMessage = message.Replace("'", "\'"); 

不起作用,必须是:

string cleanMessage = message.Replace("'", "\\\'");

您需要使用\屏蔽\,使用其他'屏蔽\

答案 9 :(得分:3)

从后面的代码调用JavaScript函数

步骤1添加您的Javascript代码

<script type="text/javascript" language="javascript">
    function Func() {
        alert("hello!")
    }
</script>

步骤2在您的webForm中添加1 脚本管理器并添加1 按钮

步骤3在按钮点击事件中添加此代码

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);

答案 10 :(得分:3)

如果要显示警告框以显示在同一页面上,而不显示在空白页面上,请尝试此操作。

ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Sorry there are no attachments');", true);

答案 11 :(得分:2)

string script = string.Format("alert('{0}');", cleanMessage);     
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key_name", script );", true);

答案 12 :(得分:2)

100%没有任何问题,并且不会重定向到另一个页面...我尝试复制此内容并更改您的消息

// Initialize a string and write Your message it will work
string message = "Helloq World";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("alert('");
sb.Append(message);
sb.Append("');");
ClientScript.RegisterOnSubmitStatement(this.GetType(), "alert", sb.ToString());

答案 13 :(得分:2)

你需要修改这一行:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>"; 

还有这一个:

RegisterClientScriptBlock("alert", script); //lose the typeof thing

答案 14 :(得分:1)

您可以使用以下代码。

 StringBuilder strScript = new StringBuilder();
 strScript.Append("alert('your Message goes here');");
 Page.ClientScript.RegisterStartupScript(this.GetType(),"Script", strScript.ToString(), true);

答案 15 :(得分:1)

如果你想按照你的代码隐藏文件,那么试试这个

string popupScript = "<script language=JavaScript>";
popupScript += "alert('Your Massage');";

popupScript += "</";
popupScript += "script>";
Page.RegisterStartupScript("PopupScript", popupScript);

答案 16 :(得分:1)

如果事件特别是PAGE LOAD事件,则仅调用脚本不能这样做。

你需要打电话, 回复于(脚本);

如上所述, string script =&#34; alert(&#39;&#34; + cleanMessage +&#34;&#39;);&#34 ;;   回复于(脚本);

肯定会在页面加载事件中起作用。

答案 17 :(得分:1)

我使用它并且它可以工作,只要页面之后没有重定向。很高兴让它显示,并等到用户点击OK,无论重定向。

/// <summary>
/// A JavaScript alert class
/// </summary>
public static class webMessageBox
{

/// <summary>
/// Shows a client-side JavaScript alert in the browser.
/// </summary>
/// <param name="message">The message to appear in the alert.</param>
    public static void Show(string message)
    {
       // Cleans the message to allow single quotation marks
       string cleanMessage = message.Replace("'", "\\'");
       string wsScript = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

       // Gets the executing web page
       Page page = HttpContext.Current.CurrentHandler as Page;

       // Checks if the handler is a Page and that the script isn't allready on the Page
       if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
       {
           //ClientScript.RegisterStartupScript(this.GetType(), "MessageBox", wsScript, true);
           page.ClientScript.RegisterClientScriptBlock(typeof(webMessageBox), "alert", wsScript, false);
       }
    }    
}

答案 18 :(得分:1)

您需要escape your quotes(请查看“特殊字符”部分)。您可以通过在它们之前添加斜杠来实现:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
  Response.Write(script);

答案 19 :(得分:1)

type =“text / javascript”周围的引号会在您想要之前结束您的字符串。在里面使用单引号来避免这个问题。

使用此

 type='text/javascript'

答案 20 :(得分:1)

尝试:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

答案 21 :(得分:1)

private void MessageBox(string msg)
{
    Label lbl = new Label();
    lbl.Text  = string.Format(@"<script type='text/javascript'>alert('{0}');</script>",msg);
    Page.Controls.Add(lbl);
}

答案 22 :(得分:1)

string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

在这种情况下你应该使用string.Format。这是更好的编码风格。对你来说就是:

string script = string.Format(@"<script type='text/javascript'>alert('{0}');</script>");

另请注意,当你应该逃避“符号或使用叛逆者。

答案 23 :(得分:1)

将客户端代码作为字符串参数发送后,可以使用此方法。

注意:我没有想出这个解决方案,但是当我自己寻找一种方法时,我遇到了它,我只是编辑了一点。

它非常简单和有用,可以用它来执行超过1行的javascript / jquery / ...等或任何客户端代码

private void MessageBox(string msg)
{
    Label lbl = new Label();
    lbl.Text = "<script language='javascript'>" + msg + "')</script>";
    Page.Controls.Add(lbl);
}

来源:https://stackoverflow.com/a/9365713/824068

答案 24 :(得分:0)

 <!--Java Script to hide alert message after few second -->
    <script type="text/javascript">
        function HideLabel() {
            var seconds = 5;
            setTimeout(function () {
                document.getElementById("<%=divStatusMsg.ClientID %>").style.display = "none";
            }, seconds * 1000);
        };
    </script>
    <!--Java Script to hide alert message after few second -->

答案 25 :(得分:-2)

它简单地调用一个消息框,所以如果你想要编写代码或调用函数,我认为它更好或者可能不是。有一个过程,你可以只使用命名空间

using system.widows.forms;

然后,在那里你要显示一个消息框,只需将其称为简单,就像在C#中一样:

messagebox.show("Welcome");