gpt4 book ai didi

c# - ViewModel 或 Model 中的 ASP.NET MVC 验证?

转载 作者:行者123 更新时间:2023-12-02 08:30:09 24 4
gpt4 key购买 nike

我有一个包含基本信息的模型。但是,我的 View 需要更多信息才能显示,因此我认为这里需要 ViewModel 来显示额外的信息。但是,我应该在模型中添加验证属性,以便当我执行代码优先迁移时,它会自动为我创建数据库每列的正确数据类型,或者我应该将验证属性添加到ViewModel,因为表单应该验证填充的信息?

public class Module
{
[Key]
public int id { get; set; }

[Required]
[StringLength(100)]
[Column(TypeName = "varchar")]
[Display(Name="Module Name")]
public string ModuleName { get; set; }
}


public class ModuleViewModel
{
[Key]
public int id { get; set; }

[Required]
[StringLength(30)]
[Column(TypeName="varchar")]
[Display(Name="Module ID")]
public string ModuleID { get; set; }

[Required]
[StringLength(100)]
[Column(TypeName = "varchar")]
[Display(Name="Module Name")]
public string ModuleName { get; set; }

//To populate dropdownlist
public List<SelectListItem> ModuleLevelList { get; set; }

}

在这种情况下我真的需要 ViewModel 吗?

最佳答案

用于用户输入验证的数据注释属性位于 ViewModel 上。 Entity Framework 代码的数据注释首先在模型上进行。

它们在概念上是两个不同的东西,即使用 EF Code First 验证输入和数据库生成。

例如,Entity Framework Code First 的必需和 StringLength 创建类型为 varchar(length) NOT NULL 的数据库列。 ViewModel 上的Required 和StringLength 用于验证用户输入。不要将两者混为一谈,使用 StringLength(length) 两次没有任何问题。如果您希望长度仅表示一处,请将长度值放入静态常量中。

关于c# - ViewModel 或 Model 中的 ASP.NET MVC 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40980222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com