C# 列表<;模型>;在EditorFor中未正确递增

C# 列表<;模型>;在EditorFor中未正确递增,c#,jquery,asp.net-mvc,knockout.js,enums,C#,Jquery,Asp.net Mvc,Knockout.js,Enums,我有一个包含模型的视图,该模型包含一个列表(另一个模型的列表),该列表在我的视图中填充有动态重复字段 型号: public class CAOEntry { public CAOEntry() { this.TimeEntries = new List<TimeEntry>() { new TimeEntry() }; } public DateTime ValidFrom { get; set; } public DateT

我有一个包含模型的视图,该模型包含一个列表(另一个模型的列表),该列表在我的视图中填充有动态重复字段

型号:

 public class CAOEntry
{
    public CAOEntry()
    {
        this.TimeEntries = new List<TimeEntry>() { new TimeEntry() };
    }
    public DateTime ValidFrom { get; set; }
    public DateTime ValidTo { get; set; }
    public List<TimeEntry> TimeEntries {get; set;}
}
现在,当我填写了两个时间条目并单击save时,会发生以下情况; 有三个时间条目返回到我的控制器: 一个包含第一个填充的枚举值,其他字段为空。 另外两个不包含任何枚举值,但填充了其他字段

调试视图时,我看到以下问题


时间条目1: 枚举字段

id="TimeEntries_0__DayOfWeekOrHoliday" name="TimeEntries[0].DayOfWeekOrHoliday"
id="TimeEntries_0__DayOfWeekOrHoliday" name="TimeEntries[0].DayOfWeekOrHoliday"
第二个字段的示例:

id="TimeEntries_1__TimeFrom" name="TimeEntries[1].TimeFrom" 
id="TimeEntries_2__TimeFrom" name="TimeEntries[2].TimeFrom" 

时间条目2: 枚举字段

id="TimeEntries_0__DayOfWeekOrHoliday" name="TimeEntries[0].DayOfWeekOrHoliday"
id="TimeEntries_0__DayOfWeekOrHoliday" name="TimeEntries[0].DayOfWeekOrHoliday"
第二个字段的示例:

id="TimeEntries_1__TimeFrom" name="TimeEntries[1].TimeFrom" 
id="TimeEntries_2__TimeFrom" name="TimeEntries[2].TimeFrom" 

因此,数组没有按枚举值正确递增。这是因为EditorFor帮助程序中存在枚举字段吗? 我想不出怎么解决这个问题。 [编辑] 时间输入类:

public class TimeEntry
{
    public int ID { get; set; }

    //1:Monday,2:Tuesday,3:Wednesday,4:Thursday,5:Friday,6:Saturday,7:Sunday,8:Any Holiday
    public enum Days {Maandag =1,Dinsdag =2, Woensdag=3,Donderdag = 4, Vrijdag= 5, Zaterdag=6, Zondag=7, Feestdag = 8}
    [Required]
    [Display(Name = "Dag")]
    [Range(1, int.MaxValue, ErrorMessage = "Selecteer een dag")]
    public Days DayOfWeekOrHoliday { get; set; }

    [Required]
    [Display(Name = "Start Tijdvak(uur:minuten)")]
    [StringLength(5, MinimumLength = 5)]
    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:hh:mm}")]
    public string TimeFrom { get; set; }

    [Required]
    [Display(Name = "Eind Tijdvak(uur:minuten)")]
    [StringLength(5, MinimumLength = 5)]
    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:hh:mm}")]
    public string TimeTo { get; set; }

    [Required]
    public decimal Premium { get; set; }

}
编辑:

function createViewModel() {

        var createTimeEntry = function () {
            return {
                DayOfWeekOrHoliday: ko.observable(),
                TimeFrom: ko.observable(),
                TimeTo: ko.observable(),
                Premium: ko.observable()
            };
        };

        var addTimeEntry = function () {
            TimeEntries.push(createTimeEntry());
        };

        var removeTimeEntry = function () {
            TimeEntries.pop();
        };

        var ValidFrom = ko.observable();
        var ValidTo = ko.observable();
        var TimeEntries = ko.observableArray([createTimeEntry()]);

        return {
            ValidFrom: ValidFrom,
            ValidTo: ValidTo,
            TimeEntries: TimeEntries,
            addTimeEntry: addTimeEntry,
            removeTimeEntry: removeTimeEntry
        };
    }

$(document).ready(function () {
        var viewModel = createViewModel();
        ko.applyBindings(viewModel);
    });
</script>
函数createViewModel(){
var createTimeEntry=函数(){
返回{
DayOfWeekOrHoliday:ko.observable(),
TimeFrom:ko.observable(),
TimeTo:ko.observable(),
溢价:高可观察()
};
};
var addTimeEntry=函数(){
push(createTimeEntry());
};
var removeTimeEntry=函数(){
TimeEntries.pop();
};
var ValidFrom=ko.observable();
var ValidTo=ko.可观察();
var TimeEntries=ko.observearray([createTimeEntry()]);
返回{
ValidFrom:ValidFrom,
ValidTo:ValidTo,
TimeEntries:TimeEntries,
addTimeEntry:addTimeEntry,
removeTimeEntry:removeTimeEntry
};
}
$(文档).ready(函数(){
var viewModel=createViewModel();
应用绑定(视图模型);
});

请显示TimeEntries类的代码和EditorFor中的代码。@JamesDev我现在将其添加到我的想法之上,因为@Html.EditorFor(model=>model.TimeEntries)无法正确处理@Html.EnumDropDownListFor(),有任何想法或修复方法吗?我还尝试将EnumDropDownListFor()更改为@Html.DropDownList()(“TimeEntry.Days”、EnumHelper.GetSelectList(typeof(TimeEntry.Days))、“选择我的类型”、new{@class=“form control”})这给了我同样的结果。请显示TimeEntries类的代码和编辑器for中的代码。@JamesDev我现在将它添加到我的思想之上,@Html.EditorFor(model=>model.TimeEntries)没有正确处理@Html.EnumDropDownListFor(),有什么想法或修复方法吗?我还尝试将EnumDropDownListFor()更改为@Html.DropDownList(“TimeEntry.Days”,EnumHelper.GetSelectList(typeof(TimeEntry.Days)),“选择我的类型”,新的{@class=“form control”},这给了我同样的结果