MVC Опубликованный массив объектов имеет значение null из-за поля, а не свойства
Прошлой ночью я создал модель, содержащую поля массивов объектов, которая имеет требуемые свойства внутри. Привязка модели работала корректно при запросе GET, но когда она была отправлена обратно, все возвращается к модели, за исключением полей этих массивов. Сначала я проверил синтаксис, добавил идентификаторы к этим объектам, но ни один из них не работал. Модель была:
public class RateEditVM
{
[Required(ErrorMessage = "IDF boş geçilemez!")]
public int? FK_ITH_IDFID { get; set; }
[Required(ErrorMessage = "Mal Bedeli boş geçilemez!")]
public decimal? GoodsPrice { get; set; }
[Required(ErrorMessage = "İlk kur boş geçilemez!")]
public decimal? GGBRate { get; set; }
[Required(ErrorMessage = "Mal Bedeli (TL) boş geçilemez!")]
public decimal? GoodsPriceTL { get; set; }
public RateValueHolder[] ShippingExpenseValues ;
public RateValueHolder[] InsuranceExpenseValues;
public RateValueHolder[] BankExpenseValues ;
public RateValueHolder[] CustomsExpenseValues;
public RateValueHolder[] LocalExpenseValues;
[Required(ErrorMessage = "Diğer Masraflar boş geçilemez!")]
public decimal? OtherExpense { get; set; }
[Required(ErrorMessage = "Toplam Masraflar boş geçilemez!")]
public decimal? TotalExpense { get; set; }
[Required(ErrorMessage = "Toplam Tutar boş geçilemez!")]
public decimal? Total { get; set; }
[Required(ErrorMessage = "Son Kur boş geçilemez!")]
public decimal? RateCalculated { get; set; }
}
и эти объекты были ValueHolders:
public class RateValueHolder
{
[Required(ErrorMessage = "Boş geçilemez!")]
public decimal? Value { get; set; }
public int ID { get; set; }
public string Description { get; set; }
}
1 ответ
Ответ был неловким. Когда я изменил поля на свойства, все работало нормально:
public RateValueHolder[] ShippingExpenseValues { get; set; }
public RateValueHolder[] InsuranceExpenseValues { get; set; }
public RateValueHolder[] BankExpenseValues { get; set; }
public RateValueHolder[] CustomsExpenseValues { get; set; }
public RateValueHolder[] LocalExpenseValues { get; set; }
Я думаю, это ошибка по умолчанию ModelBinder в MVC. Если ModelBinder ищет только свойства, он должен выдавать ошибки, когда этот класс Model имеет это поле, а не свойство IMO. Потому что, на мой взгляд, я использую эти поля в качестве предикатов, чтобы MVC знал, что я связываю.
<fieldset class="col-xs-12">
<legend>Nakliye Masrafları</legend>
@for (var i = 0; i < Model.ShippingExpenseValues.Length; i++)
{
@Html.EditorFor(e => e.ShippingExpenseValues[i]);
}
</fieldset>