有一个服务端的按钮,在执行完一系列任务以后,要弹出一个js对话框,或者执行一段其它的js代码,而这些js代码我并不想写在html端,用下面的函数就能解决这个问题。
using System;
using System.Web.UI;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//直接alert
JSAlert("Hello!");
}
protected void Button3_Click(object sender, EventArgs e)
{
//在这里写你的js代码
string jscodestr = "alert('Hello2222');";
RunJSCode("jsname", jscodestr);
}
/// <summary>
/// 弹出对话框
/// <para>如 JSAlert("aaa");</para>
/// </summary>
/// <param name="Str">要弹出的字符串</param>
public void JSAlert(string Str)
{
try
{
ScriptManager.RegisterStartupScript((Page)System.Web.HttpContext.Current.Handler, ((Page)System.Web.HttpContext.Current.Handler).GetType(), "ALERT", "alert('" + Str + "');", true);
}
catch (Exception ErrMsg)
{
}
}
/// <summary>
/// 执行一段js代码
/// </summary>
/// <param name="jsname">js名称</param>
/// <param name="jsstrs">js代码内容</param>
public void RunJSCode(string jsname, string jsstrs)
{
ScriptManager.RegisterStartupScript((Page)System.Web.HttpContext.Current.Handler, ((Page)System.Web.HttpContext.Current.Handler).GetType(), jsname, jsstrs, true);
}
}
}
如果觉得刷新的页面,感觉很不好的话,可以套一个updatepanel
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button2" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>