Niedawno napotkałem problem podczas wdrażania rozwiązania JSON dla klienta. Jeśli nazwa parametru akcji pasuje do nazwy właściwości modelu, bindownica nie zwiąże żadnych właściwości.MVC3 Json Bind Bug?
Przykład:
Controller Ludzie
public ActionResult SetEmails(Person emails){
...
return Content("");
}
Ponieważ nazwa parametr zwany „email” i że pasuje do nazwy właściwości modelu osobę zwaną „email” .. spoiwo zawiedzie, ale nie daje żadnych wskazówek, dlaczego ..
mieli model o nazwie Person
public class Person {
public string Name { get; set; }
public List<string> Emails { get; set; }
public Person() {
Emails = new List<string>();
}
}
Czy to błąd, czy "funkcja"?
Moje pytanie brzmi bardziej w odniesieniu do tego, jak nazwa argumentu może spowodować konflikt ze spoiwem? Nazwa nie powinna mieć znaczenia, ponieważ jest to typ klasy, który definiuje swój schemat, aby dopasować go do danych json. Dlaczego więc segregator powinien dbać o nazwę argumentu lub czy pasuje do nazwy właściwości w typie klasy samego argumentu?
Czy możesz wysłać kod wywołujący js, lub co najmniej JSON, który przesyłasz? –
json będzie: {"Nazwa": "Jan", "E-maile": ["[email protected]", "test2 @ test.com "]} Json był w porządku, jak powiedziałem, kiedy zmieniłem nazwę argumentu Akcje z E-maili (pasuje do nazwy właściwości modelu) na wszystko, co nie pasowało, zadziałało. Po prostu pomyślałem, że to jest interesujące i nie widzę powodu, dla którego to nie powinno zadziałać, lub przynajmniej wyrzuć wyjątek zamiast instancji klasy o zerowych wartościach właściwości !? – Mike