简体   繁体   English

没有使用PageMethods调用方法背后的代码

[英]Code behind method not being called using PageMethods

I am trying to call a very simple code behind c# method using PageMethods (AJAX). 我试图使用PageMethods(AJAX)在c#方法后面调用一个非常简单的代码。 I have EnablePageMethods = true and have my code behind method as WebMethod public static. 我有EnablePageMethods = true并将我的代码作为WebMethod公共静态方法隐藏在方法后面。 I tried ScriptMethod with WebMethod as well but nothing working. 我也尝试了ScriptMethod和WebMethod,但没有任何效果。 I tried changing config file as well but no luck. 我也尝试更改配置文件,但是没有运气。

 <script type="text/javascript">
    function ShowAvailability() {
        PageMethods.btnCheck_Click(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess)
    };
            function OnSuccess(response) {
                alert("On Success");
                var mesg = document.getElementById("mesg");
                switch (response) {
                    case "true":
                        mesg.style.color = "green";
                        mesg.innerHTML = "Available";
                        break;
                    case "false":
                        mesg.style.color = "red";
                        mesg.innerHTML = "Not Available";
                        break;
                    case "error":
                        mesg.style.color = "red";
                        mesg.innerHTML = "Error occured";
                        break;
                }
            }
            function OnChange(txt) {
                document.getElementById("mesg").innerHTML = "";
            }

            function test()
            {              
            }
</script>

<form id="form1" runat="server">
    <asp:ScriptManager ID="sm" EnablePageMethods="true" EnablePartialRendering="true" runat="server" />
<div>
        UserName :
<asp:TextBox ID="txtUserName" runat="server"
    onkeyup="OnChange(this)"></asp:TextBox>
        <%--<asp:Button ID="btnCheck" runat="server" Text="Show Availability"  OnClientClick="btnCheck_Click(), return false;"></asp:Button>--%>
        <br />
        <button id="btncheck" onclick="ShowAvailability()">Show Availability</button>
        <span id="mesg"></span>

    </div>
</form>

using OnClientClick, you can not call code behind method , it will call to script function named btnCheck_Click. 使用OnClientClick,您不能在method后面调用代码,它将调用名为btnCheck_Click的脚本函数。

Use this-


    <asp:Button ID="btnSearch" runat="server" ClientIDMode="Static" Text="Search" CssClass="button" OnClick="btnSearch_Click" />

and in code behind of same page use- 并在同一页面后面的代码中使用-

  protected void btnSearch_Click(object sender, EventArgs e)
    {
       //your code
    }

in case you want to use ajax. 如果您想使用ajax。 then in client end declare- 然后在客户端声明-

Use this-



<asp:Button ID="btnSearch" runat="server" ClientIDMode="Static" Text="Search" CssClass="button" OnClientClick="btnSearch_Click()" />

and in Script tag call ajax 并在脚本标签中调用ajax

function btnSearch_Click()
    { 
       jQuery.ajax({
                url: "Dashboard.aspx/getUserDetails", /* getUserDetails is a web method */
                type: "POST",
                data: jsondata,  /* jsondata= passed parameter in json format */
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) { },
                error: function () {
                    $('#Loadingimage').hide();
                    jAlert("Please try again later", 'Moderators');

                }
             });
    }

and in Dashboard.aspx.cs write this code 并在Dashboard.aspx.cs中编写此代码

     [WebMethod]
    public static String getUserDetails(string strUserId)
    {
      return "";    /* for string only */
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM