Arrays MVC发布的对象数组属性因字段而不是属性而为空

Arrays MVC发布的对象数组属性因字段而不是属性而为空,arrays,asp.net-mvc,http-post,model-binding,Arrays,Asp.net Mvc,Http Post,Model Binding,昨晚,我创建了一个包含对象数组字段的模型,其中包含必需的属性。模型绑定在GET请求时工作正常,但当它发回时,所有内容都返回到模型,不包括这些数组的字段。 起初,我检查了语法,向该对象添加了ID,但它们都不起作用。 模型是: public class RateEditVM { [Required(ErrorMessage = "IDF boş geçilemez!")] public int? FK_ITH_IDFID { get; set; } [Require

昨晚,我创建了一个包含对象数组字段的模型,其中包含必需的属性。模型绑定在GET请求时工作正常,但当它发回时,所有内容都返回到模型,不包括这些数组的字段。 起初,我检查了语法,向该对象添加了ID,但它们都不起作用。 模型是:

    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; }
}
这些对象是价值持有人:

    public class RateValueHolder
{
    [Required(ErrorMessage = "Boş geçilemez!")]
    public decimal? Value { get; set; }

    public int ID { get; set; }
    public string Description { get; set; }
}

答案很尴尬。当我将字段更改为属性时,一切都很好:

    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; }
我认为,这是MVC中默认ModelBinder的一个缺陷。如果ModelBinder只查看属性,那么当该模型类具有该字段而不是属性IMO时,它应该抛出错误。因为在我看来,我使用这些字段作为谓词,以便MVC知道im绑定的内容

<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>

Nakliye Masrafları
@对于(var i=0;ie.ShippingExpenseValues[i]);
}

这不是一个bug。这是我设计的,所以我必须自己找。在我看来,这是个糟糕的设计。如果我是设计师,我可能会抛出一个异常,说“您的模型有{0}字段,但它应该是绑定到视图的属性”编写您自己的自定义
ModelBinder
(您可以做任何您想做的事情)