asp.net中前端先调用的后台方法,然后在后台再调用前端方法没有作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net中前端先调用的后台方法,然后在后台再调用前端方法没有作用相关的知识,希望对你有一定的参考价值。

各位高手,我想实现的是,在前端先调用后台方法,后台处理一些事情再调用前端方法,但第二次调用没有作用,如果直接在后台调用前端方法是可以的。
首先在前端:
window.onload = function ()
var s = '<%=OnClient() %>'; //调用后台方法
....
前端另外定义一个被调用的方法:
function MyFun22()
alert(“aaa”); //此方法定义在<head>中

最后是后台的方法:
public string OnClient()

//后台处理一些事情再调用前端方法:
ClientScript.RegisterStartupScript(ClientScript.GetType(), "MyFun22", "<script type='text/javascript'>MyFun22();</script>"); //这一句调用没有作用!!
return "OK";

如果方法OnClient放在Page_Load中调用是有效果的,但按上面的调用却没有效果了,是不是生命周期的问题,应该怎么解决这个问题呢?谢谢了!
我调试了,var s = '<%=OnClient() %>';是可以调用到的,OnClient()中的ClientScript.RegisterStartupScript(....代码段也执行了,但前端的MyFun22方法被执行。但如果在后台的page_load中直接执行ClientScript.RegisterStartupScript(....,前端的MyFun22方法是可以被执行的。 这两者有什么区别呢?
如果我想先前端调用后台的方法,然后在后台调用前端的方法,应该怎么实现呢?谢谢了!

参考技术A 明显的
var s = '<%=OnClient() %>'; //调用后台方法

这句话不会调用后台代码
js调用不到C#的代码。。。
C#也调用不到JS代码。。。
ClientScript.RegisterStartupScript(ClientScript.GetType(), "MyFun22", "<script type='text/javascript'>MyFun22();</script>");

这句话之所以能调用到前台的是因为他会输出以下这段html代码到前台页面
<script type="text/javascript">
MyFun22();
</script>

Js调用asp.net后台代码

方法一

        1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;  

        2、在前台写一个js函数,内容为document.getElementById("btn1").click()

             或者document.getElementById("btn1").onclick()  

        3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

方法一直接使用<%=%>调用

         前台方法:

         <script type="text/javascript">  
                    var methodStr = "<%=BehindMethod() %>";  
                    alert(methodStr);  
        </script> 

        后台方法:

         public static string BehindMethod()
        {

            //处理方法

            return " ";

        }

         注:在后台创建方法,必须是static(静态的),方法必须是public类型的,否则访问不到会报异常,





以上是关于asp.net中前端先调用的后台方法,然后在后台再调用前端方法没有作用的主要内容,如果未能解决你的问题,请参考以下文章

asp.net前端怎么传list给后台

ASP.NET 使用 AjaxPro 实现前端跟后台交互

asp.net js调用后台方法

asp.net后台给动态button按钮写事件

Asp.net中ajax调用后台方法

利用JQuery直接调用asp.net后台方法