有一個服務端的按鈕,在執行完一系列任務以後,要彈出一個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>