使用 ASP.NET C# 中的 jQuery 将多个参数传递给 Web 方法

Passing Multiple parameters to Web Method using jQuery in ASP.NET C#

我使用 WebMethod(服务)绑定了下拉列表 我有多个下拉列表,需要像下拉列表的级联一样相互依赖地绑定,但是在为一个选定的淡水河谷传递值时,它在我的 web 方法上调试时显示 null

网络方法:

 public static List<Company> GetCompanies(string CountryCode, string CompanyCode)
        {
            GetInitiatorList.MasterDataServiceClient oClient = new GetInitiatorList.MasterDataServiceClient();
            Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M[] initiatorsList = oClient.GetActiveCompanies(CountryCode, CompanyCode)                                                                                 List<Company> Companyes = new List<Company>();
            foreach (Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M company in initiatorsList)
            {
                Companyes.Add(new Company()
                {
                    CountryCode = company.CompanyCode,
                    CompanyName = company.CompanyName
                });
            }
            return Companyes;
        }

JQuery

 $('#ddlCountry').change(function (e) {

   var selectedCountry = $('#ddlCountry').val();
   $.ajax({
            type: "POST",
            url: "Header.aspx/GetCompanies",
            data: JSON.stringify({ CountryCode: selectedCountry, CompanyCode: 'SAU' }),
            dataType: "json",
            contentType: "application/json",
            success: function (res) {
            $.each(res.d, function (data, value) {
            $("#ddlCompany").append($("<option></option>").val(value.CompanyId).html(value.CompanyName));

            $('#ddlCompany').change(function (e) {

Aspx:

 <div class="col-md-8">
       <select id="ddlCountry">
          <option value="0">--Select Country--</option>
       </select>
 </div> 

我哪里做错了请指导我

我认为你不需要将其字符串化。

而不是:

data: JSON.stringify({ CountryCode: selectedCountry, CompanyCode: 'SAU' }),

尝试:

data: { CountryCode: selectedCountry, CompanyCode: 'SAU' },

要从下拉列表中获取当前选择的值:

$('#ddlCountry').val();

要从下拉列表中获取当前选定的文本:

$('#ddlCountry :selected').text();

您可以首先检查您的 ajax 调用是否正常工作,方法是在 ajax 调用中指定如下发送硬编码文本:

$.ajax({
    type: "POST",
    url: "Header.aspx/GetCompanies",
    data: JSON.stringify({ CountryCode: 'USA', CompanyCode: 'SAU' })
    ....

然后您可以检查您是否正确分配了下拉值?如果你只想要文本而不是价值,那么你可以使用我在上面提到的。我认为它会解决你的问题。如果不是,请告诉我。

============更新(阅读评论后)======================

我已经根据您的示例创建了示例演示。因为我没有你的服务代码,所以很容易给它一个测试来检查它是否工作,否则它会给我和你一样的错误。

我为测试所做的工作对您来说可能看起来微不足道,但请检查,它对我有用并给我正确的结果。这是 Route Config 文件的屏幕截图,看看红色圆圈(我必须更改它才能使用 web 方法)

chrome 开发工具的屏幕截图(为简单起见,此处为 Contact.aspx 页面)

最后 Contact.aspx -> GetCompanies web 方法断点点击屏幕截图,这里为了简单起见我修改了方法体,只是为了检查数据绑定是否有效。

所以,它对我有用。请您逐一检查所有步骤并告诉我。如果对您有所帮助,那将是我的荣幸。

需要.aspx后缀吗?

Try like this url: "Header/GetCompanies", 

非常愚蠢的一点,我在这里错过了我正在返回的网络方法CompanyCode,如您所见

国家代码 = company.CompanyCode, 公司名称 = company.CompanyName

并且在 Html 中,我试图绑定 CompanyId,正如您在此处看到的那样:

$("#ddlCompany").append($("<option></option>").val(value.CompanyId).html(value.CompanyName));

所以对于明显的区域,它变为空或 0。

我只需将 value.CompanyId 替换为 CompanyCode,它现在运行良好