天天看點

ASP.NET的背景代碼和前台JS代碼互相調用

在實際的Web開發中,我們可能會常常遇到背景調用前台JS代碼或者前台JS調用背景代碼的情況。今天就把比較實用的前背景互相調用的方法總結出來和大家分享。

<1>背景代碼調用前台JS代碼

一、說到背景代碼調用前台的JS代碼很多人首先就會想到使用ClientScript.RegisterStartupScript()方法,該方法主要是注冊啟動腳本文本,即在背景執行調用前台JS代碼

該方法有兩個重載,

1、ClientScript.RegisterStartupScript(Type type,string key ,stringscript)//分别表示: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 + "')";//當使用者離開文本框時,會提示所輸入的内容

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

四、可以使用Control的一個屬性,OnClientClick

為該屬性指派OnClientClick="SayHello()";則就會調用用戶端的方法,該方法的本質就是一個用戶端的方法。

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

<2>前台JS調用背景的方法

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

Varname=<%=SayHello()%>

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

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

<scripttype="text/javascript>

functionGet() {

varhello="<%=SayHello() %>";

alert(hello);

}

</script>

背景cs頁代碼如下:

publicstring SayHello()

{

return" Javascript調用背景代碼顯示姓名:Olive";

結果:

二、通過輔助按鈕實作前台JS調用背景代碼

1、先在前台添加一個伺服器端按鈕,輕按兩下,進入背景.cs頁,寫下将要執行的代碼

如下:

protectedvoid Button4_Click(object sender, EventArgs e) {

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

Response.Write("<script>alert('O(∩_∩)O哈哈~你好!')</script>");

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

<asp:ButtonID="btnhoutai" runat="server" Text=""Width="0" Height="0"onclick="Button4_Click"/>

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

functionShow1()

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

4、添加html按鈕并将其onclick="Show1()";

繼續閱讀