Происходит, когда класс пытается use
несколько Черты , где две или более из этих признаков имеют , определяют свойство с тем же именем и с свойством, имеющим разные начальные значения.
Пример:
Проблемное: хотя можно разрешить конфликты между конкурирующими методами , в настоящее время нет синтаксиса, который бы разрешил конфликт между двумя конкурирующими свойствами. Единственное решение в это время - refactor ; т.е. избежать конфликта между именами свойств, которые приводят к фатальной ошибке.
Вопросы, относящиеся:
Я изменил свой ответ для включения кода для тестового приложения, которое я сделал.
Обновление: Я обновил jQuery для установки 'традиционной' установки на истинный, таким образом, это будет работать снова (на ответ @DustinDavis').
Сначала JavaScript:
function test()
{
var stringArray = new Array();
stringArray[0] = "item1";
stringArray[1] = "item2";
stringArray[2] = "item3";
var postData = { values: stringArray };
$.ajax({
type: "POST",
url: "/Home/SaveList",
data: postData,
success: function(data){
alert(data.Result);
},
dataType: "json",
traditional: true
});
}
И вот код в моем классе контроллера:
public JsonResult SaveList(List<String> values)
{
return Json(new { Result = String.Format("Fist item in list: '{0}'", values[0]) });
}
, Когда я вызываю ту функцию JavaScript, я получаю предупреждение, говоря "Первый объект в списке: 'item1'". Надежда это помогает!
Не отправляйте данные как массив. Для привязки со списком пары ключ/значение должны быть отправлены с тем же значением для каждого ключа.
Вам не должна быть нужна форма, чтобы сделать это. Вам просто нужен список пар ключ/значение, которые можно включать в вызов к $ .post.
FYI: JQuery изменили способ сериализации почтовых данных.
http://forum.jquery.com/topic/nested-param-serialization
Вы должны установить для параметра «Традиционный» значение true, иначе
{ Values : ["1", "2", "3"] }
будет отображаться как
Values[]=1&Values[]=2&Values[]=3
вместо
Values=1&Values=2&Values=3