我在一个常见问题中使用了这个答案https://stackoverflow.com/a/11682510/801005。 当你想立即在列表中添加复杂类型时,这适用于编辑数据,但不适用于创建数据。
如果在控制器中进行创建操作,则应创建AssignSoftwareLicenseViewModel
的实例并创建ICollection<SelectableDeviceViewModel> Devices
的实例。之后,您必须创建SelectableDeviceViewModel
的实例并将其添加到集合中。然后将创建的AssignSoftwareLicenseViewModel
返回到视图。
所有文本框都创建得很好,帖子也可以。但是因为您创建了对象的实例,LicenseId
在屏幕上的值为0
。如果您还拥有DateTime
属性,则会在屏幕上的文本框中将01-01-0001
作为默认值。
如何删除这些值?我的显示属性现在没用了......
日期时间示例:
[Display(Name = "Geboortedatum")]
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime BirthDay { get; set; }
示例创建
public ActionResult Create()
{
AssignSoftwareLicenseViewModel vm = new AssignSoftwareLicenseViewModel();
vm.Devices = new Collection<SelectableDeviceViewModel>();
vm.Devices.Add(new SelectableDeviceViewModel());
return View(vm);
}
答案 0 :(得分:0)
将您的模型属性声明为可空类型,您不应该遇到此问题。
public DateTime? BirthDay { get; set; }
public int? LicenseId { get; set; }