jqueryajax调用用户控件中的代码隐藏方法

jqueryajax调用用户控件中的代码隐藏方法,jquery,asp.net,ajax,user-controls,Jquery,Asp.net,Ajax,User Controls,我们可以使用jQueryAjax调用用户控制代码隐藏方法吗 谢谢,“我们可以使用jQueryAjax调用用户控件代码隐藏方法吗 如果您的意思是使用Web方法,则不能。您不能像使用PageMethod那样通过外部查询直接访问用户控件的方法。它们仅在页面(ascx)级别受支持 只需将WebServiceasmx用于您的功能。您不能使用Jquery Ajax直接在用户控件中调用方法 您可以尝试以下方法之一: 将URL设置为PageName.aspx?Method=YourMethod,或者添加一些

我们可以使用jQueryAjax调用用户控制代码隐藏方法吗

谢谢,

“我们可以使用jQueryAjax调用用户控件代码隐藏方法吗

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


只需将WebService
asmx
用于您的功能。

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

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

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

  • 如果需要,您可以使用客户机回调来执行某些方法 需要执行异步操作。在页面的GetCallbackResult中,您 可以找到导致回调的控件,并传递请求 将其参数传递给控件


不。您不能从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;
     }
我以前没有用用户控件尝试过,但是你可以试试。 将Ajax方法放在包含控件的页面上,并从用户控件调用WebMethod


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

我没有告诉你“它们仅在页面(ascx)上受支持”。我想即使是页面方法也不能在控件内部使用,对吗?是的。页面方法仅在页面中受支持,而在用户控件中不受支持。可能重复
[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();
    }
}