【问题标题】:Jquery ajax call to code behind method in user controlJquery ajax 调用用户控件中的代码隐藏方法
【发布时间】:2023-04-02 11:11:01
【问题描述】:

我们可以使用 Jquery ajax 在方法后面调用用户控制代码吗?

谢谢,

【问题讨论】:

标签: jquery asp.net ajax user-controls


【解决方案1】:

您不能使用 Jquery Ajax 在用户控件中直接调用方法。

您可以尝试以下方法之一:

  • 将 URL 设置为 PageName.aspx?Method=YourMethod 或者添加一些 其他限制,以便您知道应该执行哪个用户控件 方法。然后在您的用户控件中,您可以检查是否存在 您在查询字符串中的限制,并执行给定的方法。

  • 你可以只使用客户端回调来执行一些方法,如果你 需要做一些异步的事情。在页面的 GetCallbackResult 中,您 可以找到引起回调的控件,并传递请求 及其对控件的参数。

【讨论】:

    【解决方案2】:

    "我们可以使用 Jquery ajax 调用 用户控制 代码隐藏方法吗?

    如果您的意思是使用 Web 方法,则不。您不能像使用PageMethod 那样通过外部查询直接访问用户控件的方法。它们仅在页面 (ascx) 级别受支持。

    只需使用 WebService asmx 来代替您的功能。

    【讨论】:

    • 我没有告诉你“它们仅在页面(ascx)中受支持”。我想即使是 PageMethods 也不能在控件内部使用吗?
    • 是的。页面方法仅在 PAGES 中受支持,在 UserControls 中不支持。
    【解决方案3】:

    没有。您不能从 JQuery Ajax 调用用户控件的代码, 但是如果你有一个 aspx 页面,你可以像下面这样调用它:

     function AddNew() {
    
            var lname = $("#<%# txtLNameAdd.ClientID %>").val(); //$("#txtFname").val(); // 
            var fname = $("#<%# txtfnameadd.ClientID %>").val(); //$("#txtLname").val(); // 
            var email = $("#<%# txtEmailAdd.ClientID %>").val();
            var address = $("#<%# txtAddressAdd.ClientID %>").val();
            var paramList = '{"fname":"' + fname + '","lname":"' + lname + '","email":"' + email    
             + '","address":"' + address + '"}';
            alert(paramList);
            $.ajax({
                type: "POST",
                url: "GetData.aspx/AddNewMember",
                dataType: "json",
                contentType: "application/json",
                processData: false,
                data: paramList,
                success: function (msg) {
                    alert('success');
                },
                error: function (msg) {
                    alert("error " + msg.responseText);
                }
            });
             return false;
         }
    

    后面的代码应该是static 和[WebMethod] 像这样:

    [WebMethod]
    public static void AddNewMember(string fname, string lname, string email, string address)
    {
        SqlConnection con = new SqlConnection(
            System.Configuration.ConfigurationManager
                  .ConnectionStrings["RepeaterDBConnection"].ConnectionString);
        SqlCommand comm = new SqlCommand();
        try
        {
            comm.Connection = con;
            comm.CommandType = CommandType.StoredProcedure;
            comm.CommandText = "[dbo].[AddTeamMember]";
            comm.Parameters.Add(new SqlParameter("@psFname", SqlDbType.VarChar)).Value = fname;
            comm.Parameters.Add(new SqlParameter("@psLname", SqlDbType.VarChar)).Value = lname;
            comm.Parameters.Add(new SqlParameter("@psEmail", SqlDbType.VarChar)).Value = email;
            comm.Parameters.Add(new SqlParameter("@psAddress", SqlDbType.VarChar)).Value = address;
            con.Open();
            comm.ExecuteNonQuery();
        }
        catch (SqlException Ex)
        {
            // write any exception 
        }
        finally
        {
            con.Close();
        }
    }
    

    我之前没有用用户控件尝试过,但你可以试试。 将 Ajax 方法放在包含该控件的页面上,并从用户控件中调用 WebMethod。

    我认为它应该可以工作,因为所有文件都将被合并。

    【讨论】:

      猜你喜欢
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多