1. 程式人生 > >ASP.NET 前後臺調用

ASP.NET 前後臺調用

底部 return 通過 alert ntc ffffff seo control 關聯

1.後臺代碼調用前臺JS代碼

一、說到後臺代碼調用前臺的JS代碼很多人首先就會想到使用Clientscript對象。

  Clientscript.RegisterStartups cript()方法,該方法主要是註冊啟動腳本文本,即在後臺執行調用前臺JS代碼

  該方法有兩個重載,

1、Clientscript.RegisterStartupscript(Type type,string key ,string script)

註冊啟動腳本//分別表示:

1、要註冊的啟動腳本的類型(一般直接填this.GetType()即可),

2、要註冊的啟動腳本的鍵(相當於為執行腳本起一個名字,任意名即可),

3、要註冊的啟動腳本文本(一般為"<script>函數()</script>");

示例:

Clientscript.RegisterStartupscript(this.GetType(),"SayHello","<script>SayHello(‘"+name+"‘)</script>");//先獲取用戶姓名,然後再調用前臺的JS函數SayHello(name);

2、Clientscript.RegisterStartupscript(Typetype,string key, string script,bool flag);//該函數和第一參數的區別在於將最後一個參數設為"ture"時,第三個參數可以直接寫被調用的函數,不用再加"<script></script>",這兩個方法差別不是很大。

示例:

Clientscript.RegisterStartupscript(this.GetType(),"SayHello1", "SayHello(‘" + name + "‘)", true);//跟第一方法的效果一樣,調用前臺SayHello(name)函數,如果最後一個值設為false,則仍需添加上"<script></script>"標記

這裏需要特別註意的是在註冊啟動腳本的時候,鍵是唯一的,不能重復,如果有將會報錯。

二、使用Clientscript.RegisterClientscriptBlock()方法,註冊客戶端腳本塊

該方法有兩個重載,使用方法幾乎和Clientscript.RegisterClientscriptBlock()的兩個方法一模一樣。這裏只是給出示例,就不再做過多的解釋。

Clientscript.RegisterClientscriptBlock(this.GetType(),"SayHello2", "ShowPerson(‘" + age + "‘)",true);

Clientscript.RegisterClientscriptBlock(this.GetType(),"SayHello2","<script>SayHello(‘"+name+"‘)</script>");

在這裏主要講一下RegisterClientscriptBlock方法和RegisterStartupscript方法和區別

RegisterStartupscript,這種方法會把JS代碼嵌入在頁面的底部、表單的最後 (</form>前面),適用於要在頁面控件加載完成後運行的JS代碼

RegisterClientscriptBlock,這種方法會把JS代碼嵌入在頁面的頂部、表單的最前 (<form>後面),適用於要在控件加載前執行的JS代碼

三、使用Control.Attribute屬性(服務器控件)

這也是一種比較簡單好用的方法,可以將該方法和控件的客戶端方法相關聯,比如“onblur,onfocus,onmousemove,onmouseover“等,在這裏只是把該方法作為Control的一個屬性來用。

示例:

在Page_Load()方法裏添加如下代碼:

txtname.Attributes["onblur"] ="show(‘" + txt.Text + "‘)";//當用戶離開文本框時,會提示所輸入的內容 (在Page_Load使用該方法,其實是在編譯成源文件時在對應的html元素的屬性調用js函數,如<inputtype=”text” onblur=”show()”/>)

還可以通過這種方法來控制前臺的顯示。其實現方法和本例的方法都是一樣的,在這裏就不做過多的介紹了。

四、可以使用Control的一個屬性,(服務器控件),OnClientClick

為該屬性賦值OnClientClick="SayHello()";則就會調用客戶端的方法,該方法的本質就是一個客戶端的方法。(該屬性只有服務器控件具有,在編譯成源文件時,其實是轉換成對應的事件,如OnClientClick會轉換成onclick)

示例:

<asp:Button ID="Button1" runat="server"OnClientClick="Get()" Text="OnClientClick方法測試"/>

五、示例

前臺js
<script type="text/javascript" language="javascript">
  function Ceshi()
  {
    var a = "你們好啊!"
    alert(a);
  }
</script>
<asp:Button ID="Button1" runat="server" Text="後臺調用js" onclick="Button1_Click" />
後臺代碼
protected void Button1_Click(object sender, EventArgs e)
{
    //如果有UpdatePanel就用如下代碼調用前臺js
    ScriptManager.RegisterStartupScript(UpdatePanel1, this.Page.GetType(), "", "Ceshi();", true);
    //如果沒有就如下代碼
    this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "", "<script language=‘javascript‘>Ceshi();</script>", false);
}
public void RegisterStartupScript(
Type type,
string key,
string script,
bool addScriptTags //false :要標記腳本標記
)
type
要註冊的啟動腳本的類型。
key
要註冊的啟動腳本的鍵。
script
要註冊的啟動腳本文本。
addScriptTags
指示是否添加腳本標記的布爾值。

2.前臺JS調用後臺方法

一、最簡單的一種方式,在前臺的JS函數中寫下如下代碼:

Var name=<%=SayHello()%>

在Asp.NET 以前的ASP就是通過這樣的方式將cs代碼寫到apsx頁的,在<% %>中就可以寫cs代碼了,效果跟在cs頁寫一樣。

在前臺頁面<head><head>節點中添加如下代碼:

<s cript type="text/javas cript>

function Get() {

var hello="<%=SayHello() %>";

alert(hello);

}

</s cript>

後臺cs頁代碼如下:

public string SayHello()

{

return " Javas cript調用後臺代碼顯示姓名: Olive";

}

結果:

二、通過輔助按鈕實現前臺JS調用後臺代碼(這樣相當於添加多了一個按鈕)

1、先在前臺添加一個服務器端按鈕,雙擊,進入後臺.cs頁,寫下將要執行的代碼

如下:

protected void Button4_Click(object sender,EventArgs e) {

//在此方法裏寫下要執行的代碼,此處為簡單的示例

Response.Write("<s cript>alert(‘O(∩_∩)O哈哈~你好!‘)</s cript>");

}

2、將該按鈕的Width屬性設為0,將Height屬性設為0,形如

<asp:Button ID="btnhoutai" runat="server"Text="" Width="0"Height="0"

onclick="Button4_Click" />

3、在前臺添加一個JS函數,如下:

function Show1() {

document.getElementById("btnhoutai").click();

}

4、添加html按鈕並將其onclick="Show1()";

如下:

<input id="btnjs"type="button" value="Js 調用後臺C#函數" onclick="Show1()"/>

經過以上這四步就可以實現JS調用後臺的代碼了。

ASP.NET 前後臺調用