从JavaScript调用ASP.NET代码隐藏功能

Sat*_*h J 6 javascript asp.net jquery

是否可以从JavaScript调用ASP.NET代码隐藏函数.

Muh*_*tar 9

是的,你可以使网络方法像..

<WebMethod(EnableSession:=True), ScriptMethod()> _ 
Public Shared Function updateContent() As String
      Return "Your String"
    End Function
Run Code Online (Sandbox Code Playgroud)

然后在javascript中调用..

PageMethods.updateTabContent(parameterValueIfAny, onSuccessMethod,onFailMethod);
Run Code Online (Sandbox Code Playgroud)

这也需要补充

<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true">
                </asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)


And*_*mer 9

我更喜欢Muhammad Akhtar PageMethod方法.只需简短说明:您不需要脚本管理器.scriptmanager只为您生成javascript代理方法.如果您的页面上已经有了JQuery,那么您可以忘记脚本管理器并在页面上写下这样的内容:

<script type ="text/javascript">
    $(document).ready(function() {
        $("#AjaxLink").click(function(e) {
            e.preventDefault();
            $.ajax({
                type: "POST",
                url: "YourPage.aspx/updateContent",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(result) {
                    $("#content").html(result.d);
                }
            });
        });
     });
</script>
Run Code Online (Sandbox Code Playgroud)

这假设您在页面上有ID AjaxLink的链接以及带有显示结果的id内容的div.好处是你可以通过scriptmanager比较jquery和注入脚本之间的30kb javascript


Fra*_*nov 3

不,不可能直接从 Javascript 调用函数后面的 ASP.NET 代码。ASP.NET 后台代码在服务器上的 ASP.NET 辅助进程上下文中执行。Javascript 在客户端浏览器的上下文中执行。

Javascript 触发执行 ASP.NET 代码的唯一方法是通过从 Javascript 到服务器进行 AJAX 调用。