我使用了这个教程生成我的Poco类,它们将用于整个应用程序..问题是我不应该修改生成的cs文件,因为它们会自动生成...我怎么添加像[Required]这样的属性?请帮忙
你不能直接添加它(除非你修改T4模板让它为你创建),但是你可以尝试使用ASP.NET动态数据中引入的技巧。所有POCO类都被定义为partial,因此让我们定义你的partial部分:
using System.ComponentModel.DataAnnotations;
[MetadataType(typeof(MyClassMetadata))]
public partial class MyClass
{
private class MyClassMetadata
{
[Required]
public object Id;
[Required]
[StringLength(100)]
public object Name;
}
}
元数据类是一种特殊类型,只用于保存元数据 - 它从未被使用。字段名称必须与实际类中相应的字段相同(字段类型不重要,因此可以使用object
)。
无论如何,在ASP.NET MVC中,您应该为每个视图使用专门的视图模型,并传递所需的数据,以便将验证属性放置在视图模型类中。
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
[HasSelfValidation]
public partial class Category : ICategory
{
[SelfValidation]
public void Validate(ValidationResults validationResults)
{
if (this.Title === "Credo")
{
validationResults.AddResult(
new ValidationResult(
"Category title cannot be a veiled reference to a former cool 2000AD character.",
this,
null,
null,
null));
}
validationResults.AddAllResults(
ValidationFactory
.CreateValidator<ICategory>()
.Validate(this));
}
}
using System;
using System.ComponentModel.DataAnnotations;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
public interface ICategory
{
int Id
{
get;
set;
}
[Required]
[StringLengthValidator(1, 50, MessageTemplate = "Category title should be a maximum of 50 characters in length.")]
string Title
{
get;
set;
}
}
[Required]
,请确保字段为 "not null",而对于 [StringLength(n)]
,请通过 MaxLength
facet 确保数据类型为 nvarchar(n)
。