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”},这给了我同样的结果