Как вызвать одно поле веб-метода для другого веб-метода в C#

#c# #asp.net #webmethod

#c# #asp.net #веб-метод

Вопрос:

Я работаю над двумя веб-методами, и я хочу получить доступ к одному файлу из другого веб-метода, и я не уверен, как это возможно. Я хочу вызвать DivisionCode другой веб-метод, возможно ли это?

WebMethod 1 Getcompanies :

Из этого веб-метода я хочу получить DivisionCode = company.DivisionCode и передам в другой веб-метод в качестве параметра

  [WebMethod]
        public static List<Company> Getcompanies(string Countrycode, string Companycode)
        {
            GetInitiatorList.MasterDataServiceClient oClient = new GetInitiatorList.MasterDataServiceClient();
            Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M[] initiatorslist = oClient.GetCompanies(Countrycode, Companycode);
            //almarai.giveaway.getinitiatorlist.alm_company_m[] companymlist = initiatorslist.companies;
            List<Company> companyes = new List<Company>();
            foreach (Almarai.GiveAway.GetInitiatorList.ALM_COMPANY_M company in initiatorslist)
            {
                companyes.Add(new Company()
                {
                    CompanyCode = company.CompanyCode,
                    CompanyName = company.CompanyName,
                    DivisionCode = company.DivisionCode
                });
            }
            return companyes;
        }
  

Уважаемый класс:

  public class Company
        {
            public string CompanyCode { get; set; }
            public string CompanyName { get; set; }
            public string DivisionCode { get; set; }
        }
  

WebMethod 2 GetDivision

Это мой второй веб-метод, и я хочу передать первое поле веб-метода другому веб-методу ( DivisionCode = company.DivisionCode )

 [WebMethod]
        public static List<Devision> GetDivision(string Countrycode, string Companycode)
        {
            string Divisi = string.Empty;
            var v = new Company();
            v.DivisionCode = Divisi;  //v.DivisionCode returning "" (Empty string)
            GetInitiatorList.MasterDataServiceClient oClient = new GetInitiatorList.MasterDataServiceClient();
           // Almarai.GiveAway.GetInitiatorList.INITIATORS_LIST initiatorsList = oClient.GetInitiatorsListByWorkflow(userid, work);
            Almarai.GiveAway.GetInitiatorList.ALM_DIVISION_M[] divisionMList = oClient.GetActiveDivisions(Countrycode, Companycode, Divisi) ; 
  

//GetActiveDivisions Ожидает три параметра, включая divisionCode

             List<Devision> Division = new List<Devision>();
            foreach (Almarai.GiveAway.GetInitiatorList.ALM_DIVISION_M Devision in divisionMList)
            {
                Division.Add(new Devision()
                {
                    DevisionCode = Devision.DivisionCode,
                    DevisionName = Devision.DivisionName
                });
            }
            return Division;
        }
  

Уважаемый класс:

 public class Devision
        {
            public string DevisionCode { get; set; }
            public string DevisionName { get; set; }
        }
  

JS

  $('#ddlCompany').change(function (e) {
                    BindDivision();
                });
  

BindCompanies:

 function BindCompanies() {
                var countrycode = $('#ddlCountry').val();

            $('#ddlCompany').empty();

            if (countrycode == 'OMN') {
                Companycode = '7000';
            }
            else if (countrycode == 'SAU') {
                Companycode = '1000';
            }
            else if (countrycode == 'UAE') {
                Companycode = '5000';
            }
            else if (countrycode == 'BAH') {
                Companycode = '4000';
            }
            else if (countrycode == 'KWT') {
                Companycode = '6000';
            }
                $.ajax({
                    type: "POST",
                    url: "Header.aspx/Getcompanies",
                    data: JSON.stringify({ Countrycode: countrycode, Companycode: Companycode }),
                    dataType: "json",
                    contentType: "application/json",
                    success: function (res) {
                        $.each(res.d, function (data, value) {
                            $("#ddlCompany").append($("<option></option>").val(value.CompanyCode).html(value.CompanyName));

                        });
                    }
                });
            }
  

BindDivision: (Метод разделения привязки требует трех параметров 1. CompanyCode , 2. CountryCode , 3. DivisionCode )

Я могу передать только два параметра ( CompanyCode , CountryCode )

Но не уверен, как передать DivisionCode . (Я знаю GetCompany метод, возвращающий три параметра, и я привязываю выпадающий список компании, используя CompanyCode и CompanyName , но что насчет DivisionCode ), потому что где я должен хранить DivisionCode поле

 function BindDivision() {
   //var DivisionCode = Not sure how to pass
    var companycode = $('#ddlCompany').val();
    var countrycode = $('#ddlCountry').val();
    $('#ddlDivision').empty();
    $.ajax({
    type: "POST",
    url: "Header.aspx/GetDivision",
    data: JSON.stringify({ Countrycode: countrycode, Companycode: companycode }),
    dataType: "json",
    contentType: "application/json",
    success: function (res) {
     $.each(res.d, function (data, value) {
        $("#ddlDivision").append($("<option></option>").val(value.DevisionCode).html(value.DevisionName));

                     });
                 }
             });
         }
  

В моем методе AJAX я передаю два параметра из выбранного выпадающего списка, и я хочу передать другой параметр, который является DivisionCode, из одного веб-метода в другой веб-метод.

Возможно, мы можем перейти из AJAX, но как я могу сохранить в ASPX (DevisionCode — это не отдельное значение, это список, как вы можете видеть, я сохраняю это значение только в списке)

Пожалуйста, помогите мне

Комментарии:

1. ну, откуда вы вызываете веб-метод GetDivision? Предположительно, это со страницы, использующей JavaScript / AJAX? Если это так, то это то место, где вам нужно добавить дополнительный параметр. Итак, вам нужно получить ответ на первый метод, извлечь нужный код из данных ответа и использовать его при вызове второго метода. Не видя вашего JS-кода, трудно быть уверенным, какой именно код вы должны написать, но это общая идея.

2. @Adyson Я вызываю GetDivision со страницы Aspx, используя jQuery AJAX. Хорошо, я обновляю свой js-код, пожалуйста, проверьте мой обновленный код

3. ОК. Что насчет того, когда вы вызывали Getcompanies ? Вы извлекли данные DivisionCode из результата и сохранили их где-нибудь, как (кажется) вы сделали с CountryCode и CompanyCode? Кажется, вам просто нужно повторить тот же процесс для этого третьего поля. Я не знаю наверняка — вы все еще показали только одну часть сценария.

4. PS Я все равно не совсем понимаю цель здесь… GetDivision возвращает список всех подразделений в определенной стране и компании. И вы используете это для заполнения выпадающего списка разделов. Это имеет смысл. Итак, почему вы хотите поместить туда определенный код разделения? Вам действительно нужен отдельный веб-метод, который возвращает детали одного подразделения? На первый взгляд это не совсем имеет смысл.

5. Я понятия не имею, что вы имеете в виду. Если вы можете передать 2 поля, вы можете передать 3. Что вы пробовали, что пошло не так? Как я уже сказал, я не могу дать вам конкретный совет, если вы не показываете весь код. Также, пожалуйста, обратитесь к моему предыдущему комментарию и объясните, почему вы хотите это сделать, потому что это не имеет логического смысла.