前台和后台互相调用方法

前台的方法在后台可以调用,后台的方法在前台也是可以调用的。

后台调用前台的方法比较简单,我们先来看看。

   //我再前台声明了一个有参方法 无参的一样的
            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;  
}

也就是说,当我们执行后台方法的时候,前台还没执行呢。

解决方案:

如果你想再后台根据你传的值做处理怎么办,一个万能的方法就是用一般处理程序去解决。

原文地址:https://www.cnblogs.com/Sea1ee/p/7240340.html