前台和后台互相调用方法
前台的方法在后台可以调用,后台的方法在前台也是可以调用的。
后台调用前台的方法比较简单,我们先来看看。
//我再前台声明了一个有参方法 无参的一样的 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;
}
也就是说,当我们执行后台方法的时候,前台还没执行呢。
解决方案:
如果你想再后台根据你传的值做处理怎么办,一个万能的方法就是用一般处理程序去解决。