Сокращение количества аргументов в веб-методе с помощью jQuery AJAX

Для этого вопроса я использую веб-формы ASP.NET на C #, веб-службу и jQuery. Я прочитал этот пост об использовании массива для передачи набора параметров в веб-метод с использованием jQuery AJAX. Мне интересно, можно ли сделать то же самое без использования индексов. Проблема с индексами заключается в том, что порядок имеет значение, а выполнение обновления вызывает затруднения, поскольку оно включает обновление клиентского скрипта и аргументов веб-метода. В настоящее время я использую именованные аргументы, но это очень утомительно. У моего самого большого веб-метода 20 аргументов! Фу! Я ищу здесь ярлык, не заботясь о порядке. Возможно ли это?

var obj = {};

// Iterate through each table row and add the editor field data to an object.
$('.addressRow').each(function ()
{
    var row = $(this);
    var addressField = row.find('.addressField');
    var attr = addressField.attr('addressFieldName');
    var val = addressField.val()
    obj[attr] = val;
});

$.ajax(
{
    type: 'POST',
    url: '/WebServices/AddressService.asmx/SaveAddress',
    data: JSON.stringify(obj),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (response)
    {
        alert('address saved');
    },
    error: function (response)
    {
        alert('error');
    }
});



[WebMethod]
public void SaveAddress(string streetAddress1, string streetAddress2, string apartmentNumber, string city, strng state, string zipCode, string country)
{
    // save address...
}

ОБНОВЛЕНИЕ:

Спасибо всем, кто ответил. Используя ваши ответы и некоторые другие вопросы по стеку, я наконец смог собрать воедино рабочую демонстрацию. Я вставляю сюда свой доказательный код концепции, так что любой, кто столкнулся с той же проблемой, может увидеть, как это делается.



    Web Service Demo
    
    
    


    

This demo shows how to pass a complex JSON object to a web method and get a reponse back from the web method.

1) It creates two JavaScript objects.

2) The JavaScript objects are JSONified and sent to the web method.

3) The web method receives the complex objects and uses them to create response text.

4) When the callback function fires, it displays the text returned from the web service.

[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] [ScriptService] public class WebService1 : WebService { [WebMethod] public string GetEmployeeData(Employee employee) { var output = string.Format("Employee #{0}: {1} {2} lives at {3} in {4}, {5} with a zip code of {6} and was born on {7}.", employee.ID, employee.FirstName, employee.LastName, employee.StreetAddress, employee.City, employee.State, employee.ZipCode, employee.BirthDate.ToShortDateString()); if (employee.AccessCodes != null) { output += string.Format(" Employee #{0} has access codes: ", employee.ID); foreach (var accessCode in employee.AccessCodes) { output += accessCode + " , "; } output = output.Substring(0, output.Length - 2); } else { output += string.Format(" Employee #{0} does not have any has access codes.", employee.ID); } return output; } } public class Employee { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime BirthDate { get; set; } public string StreetAddress { get; set; } public string City { get; set; } public string State { get; set; } public string ZipCode { get; set; } public List AccessCodes {get;set;} }

5
задан Community 23 May 2017 в 12:31
поделиться