#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. Что вы пробовали, что пошло не так? Как я уже сказал, я не могу дать вам конкретный совет, если вы не показываете весь код. Также, пожалуйста, обратитесь к моему предыдущему комментарию и объясните, почему вы хотите это сделать, потому что это не имеет логического смысла.