在列表初始化值中创建复杂类型的视图

时间:2014-03-26 14:47:48

标签: c# asp.net-mvc

我在一个常见问题中使用了这个答案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);
}

1 个答案:

答案 0 :(得分:0)

将您的模型属性声明为可空类型,您不应该遇到此问题。

public DateTime? BirthDay { get; set; }
public int? LicenseId { get; set; }