在我的应用程序中,我使用了从db生成的Entity Framework和ado.net dbcontext生成。
当有not null fk
时,客户端效果很好但是对于字段行varchar/nvarchar not null
, mvcvalidator 似乎无法识别该字段应该< EM> “需要”
知道为什么会这样吗?
答案 0 :(得分:4)
没有Mvc Validator不会读取您的数据库元数据并执行客户端验证。
通常,您会创建一个ViewModel / DTO并在那里放置验证。例如,像产品一样,查看字段如何具有属性,这些属性来自System.ComponentModel.DataAnnotations命名空间,用于使用验证约束来装饰模型。
public class Product
{
public int Id { get; set; }
[Required]
[StringLength(10)]
public string Name { get; set; }
[Required]
public string Description { get; set; }
[DisplayName("Price")]
[Required]
[RegularExpression(@"^\$?\d+(\.(\d{2}))?$")]
public decimal UnitPrice { get; set; }
}
您在视图中使用模型(如上所述),mvc将执行验证,甚至是客户端,然后使用返回的对象实例来填充您的实体模型。
如果您不想创建单独的类并坚持使用EntityFramework中的实体,则可以创建一个伙伴类。
看到这篇文章: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
向下滚动到=&gt; 但是如果我们使用图形工具进行ORM映射呢?
有一个Person
,它通过tge MetadataTypeAttribute
类似的东西:
[MetadataType(typeof(PersonMetaData))]
public partial class Person
{
}
public class PersonMetaData
{
[Required(ErrorMessage = "Name is required.")]
public object Name;
}