Jquery ajax在用户控件中调用代码隐藏方法

时间:2011-04-12 08:48:41

标签: jquery asp.net ajax user-controls

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

谢谢,

3 个答案:

答案 0 :(得分:2)

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

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

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

  • 如果你这样做,你可以使用客户端回调来执行某些方法 需要做一些异步的事情。在页面的GetCallbackResult中,你 可以找到导致回调的控件,并传递请求 其控制参数。

答案 1 :(得分:0)

“我们可以使用Jquery ajax调用用户控件代码吗?

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

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

答案 2 :(得分:0)

没有。你不能从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。

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