JavaScript:Alert.Show(消息)从ASP.NET代码隐藏
我正在阅读这个JavaScript:Alert.Show(消息)从ASP.NET代码隐藏
我正试图执行相同的。 所以我创build了一个这样的静态类:
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);
Err: 无法findtypes或名称空间名称“Alert”(是否缺less使用指令或程序集引用?)
我在这里做错了什么?
这是一个简单的方法:
Response.Write("<script>alert('Hello');</script>");
string script = string.Format("alert('{0}');", cleanMessage); if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) { page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */); }
此消息直接显示警报消息
ScriptManager.RegisterStartupScript(this,GetType(),"showalert","alert('Only alert Message');",true);
此消息显示来自JavaScript函数的提醒消息
ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "Showalert();", true);
这是在后面的c#代码中显示警报消息的两种方法
如果你在页面上使用ScriptManager,那么你也可以尝试使用这个:
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Your Message');", true);
试试这个方法:
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
你的代码不能编译。 您意外终止的string;
string script = "<script type=";
这就是你写的。 你需要避免你的双引号:
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
因为你的源代码着色应该是完全顶起来的,所以这种事情应该是非常明显的。
可能有不止一个理由不工作。
1:你正在调用你的function吗? 即
Repository.Show("Your alert message");
2:尝试使用RegisterStartUpScript方法而不是scriptblock。
3:如果您使用UpdatePanel,那也可能是一个问题。
检查这个(主题3.2)
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('ID Exists ')</script>");
我认为,这一行:
string cleanMessage = message.Replace("'", "\'");
不起作用,那一定是:
string cleanMessage = message.Replace("'", "\\\'");
你需要用\
和'
用另一个\
'
来掩盖\
。
从后面的代码调用JavaScript函数
第1步添加您的Javascript代码
<script type="text/javascript" language="javascript"> function Func() { alert("hello!") } </script>
第2步在您的webForm中添加1个脚本pipe理器 ,并添加1 button
第3步添加此代码在您的button单击事件
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);
你需要修复这一行:
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
还有这个:
RegisterClientScriptBlock("alert", script); //lose the typeof thing
string script = string.Format("alert('{0}');", cleanMessage); ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key_name", script );", true);
如果要显示警告框以显示在同一页面上,而不显示在空白页面上,请尝试此操作。
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Sorry there are no attachments');", true);
工作100%没有任何问题,不会redirect到另一个页面…我试着复制这个,并改变你的消息
// 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());
在type =“text / javascript”周围的引号在你想要的之前结束你的string。 在里面使用单引号来避免这个问题。
用这个
types= '文本/ JavaScript的'
尝试:
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
将客户端代码作为string参数发送后,可以使用此方法。
注意 :我没有提出这个解决scheme,但是当我自己寻找一个方法的时候遇到了,我只是稍微编辑了一下。
这是非常简单和有益的,可以用它来执行超过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
string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>";
在这种情况下你应该使用string.Format。 这是更好的编码风格。 对你而言,这将是:
string script = string.Format(@"<script type='text/javascript'>alert('{0}');</script>");
另外请注意,当你应该逃避“符号或使用apostroph代替。
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); }
你需要逃避你的报价 (看看“特殊字符”部分)。 你可以通过在他们之前加一个斜线来实现:
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>"; Response.Write(script);
我使用这个,它的工作原理,只要该页面以后不redirect。 很高兴显示,并等待,直到用户单击确定,无论redirect。
/// <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); } } }
如果事件是专门的PAGE LOAD事件,则只能调用脚本。
你需要调用Response.Write(script);
如上所示,string script =“alert('”+ cleanMessage +“');”; 的Response.Write(脚本);
至less可以在页面加载事件中工作。
如果你想按摩你的代码背后的代码然后试试这个
string popupScript = "<script language=JavaScript>"; popupScript += "alert('Your Massage');"; popupScript += "</"; popupScript += "script>"; Page.RegisterStartupScript("PopupScript", popupScript);
你可以使用下面的代码。
StringBuilder strScript = new StringBuilder(); strScript.Append("alert('your Message goes here');"); Page.ClientScript.RegisterStartupScript(this.GetType(),"Script", strScript.ToString(), true);
它简单地调用一个消息框,所以如果你想要后面的代码或调用函数,我认为这是更好或可能不是。 有一个过程,你可以使用命名空间
using system.widows.forms;
那么,在那里你要显示一个消息框,就像在C#中一样简单地调用它,就像:
messagebox.show("Welcome");