前台的方法在后台可以調用,后台的方法在前台也是可以調用的。
后台調用前台的方法比較簡單,我們先來看看。
//我再前台聲明了一個有參方法 無參的一樣的 function Back(i) { console.log("后台調用前台方發" + "," + i); }
//加載事件里面不能用這種,加載事件以外可以用 //Response.Write("<script>Back(9);</script>"); //原因:頁面會先執行后台加載事件,也就是說這個時候還沒前台js生成。 //什么時候都可以用 這個很靈活的,你可以自己去封裝這個方法,把參數留出來,可以根據自己的要求完成不同的前台腳本 Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script>Back(9);</script>");
后台調用沒什么好說的,今天主要想說一說前台前台后台方法。
public string BFunOne() { return "這是無參后台方法"; }
console.log("<%= BFunOne()%>"); //這是可以調用的
再來看看有參的,或許你說你知道可以 <%# BFunOne(Eval(".."))%>,這個是在控件中才能使用的,我們說的這種情況就是一般的調用后台方法。
//后台有參方法 public string Test(string o) {return o; //無法做判斷的 //string aa = ""; //switch (o) //{ // case "1": // aa="11"; // break; // case "2": // aa = "22"; // break; // case "3": // aa = "33"; // break; // default: // break; //} //return aa; }
var A = 1 + ""; var a = '<%=Test("'+A+'")%>'; //字符串的格式一定要對 console.log(a);
你會驚奇的發現居然可以啊,當然這是針對傳遞的參數在后台不用做編程的。我們仔細來看看傳遞過去的參數是什么。
//聲明一個字符串來接受傳過來的值 public string strT= "";
//后台有參方法 public string Test(string o) { strT = o; return o;
}
var A = 1 + ""; var a = '<%=Test("'+A+'")%>'; console.log(a); console.log(<%= strT %>); //來看接受的是什么值 你打斷點看是一樣的
沒有看錯,就是一個字符串,如果你了解網站的運行順序的話就很好理解了,網站是先執行后台程序,然后再執行頁面。
來看看
<%-- 我們再頁面上添加一個控件做測試,初始值為0--%> <asp:HiddenField ID="hfID" runat="server" Value="0" />
//在調用后台方法前把這個控件的值改下 $("#hfID").val("123"); var A = 1 + ""; var a = '<%=Test("'+A+'")%>';
//后台有參方法 public string Test(string o) { string aa = hfID.Value; strT = o; return o+“,”+aa;
}
也就是說,當我們執行后台方法的時候,前台還沒執行呢。
解決方案:
如果你想再后台根據你傳的值做處理怎么辦,一個萬能的方法就是用一般處理程序去解決。