【发布时间】:2018-02-06 16:42:01
【问题描述】:
如果我有一个 MVC 模型(非常简化),看起来像这样;
public class Person
{
[Required]
public string SpecialSauce { get; set; }
[Required]
public string Name { get; set; }
}
但是,只有Name 来自视图。 SpecialSauce 是在服务器端提供的。
person.SpecialSauce = "Ketchup"; //Hard-coded for example
但是,在我保存之前,我检查了 ModelState.IsValid,它返回 false,并显示错误“需要 SpecialSauce 字段”。
如何在服务器端提供所需的模型属性时使 ModelState 有效?我可以删除 [Required] 数据注释,但我希望 EF 数据库列不可为空。
【问题讨论】:
-
使用 viewmodel 而不是你的 db 类,这次不要添加所需的属性。
-
所以我需要一个单独的视图模型?这是非常基本的,需要一个单独的模型似乎很可惜,但如果这是标准做法......
-
从模型中移除
[Required]属性,但使用EF Fluent API 配置数据库映射。此外,最好创建一个视图模型来分离关注点。 -
那时你需要第二个分辨率,或者你可以编写你的验证属性并控制它。 stackoverflow.com/questions/20642328/…
标签: asp.net-mvc entity-framework