我是用ADO.NET实体模型做MVC3的系统,但是我不知道如何做验证因为模型类是自动生成的?

2017-01-10 09:10 出处:360java.com 作者:360java 评论(
我是用ADO.NET实体模型做的系统,用了这个model是自动生成的但是我不知道如何做验证因为模型类是自动生成的?之前是自己建立model然后写一些注解自动验证现在用这个不知道该怎么设置验

我是用ADO.NET实体模型做的系统,用了这个model是自动生成的

但是我不知道如何做验证因为模型类是自动生成的?

之前是自己建立model然后写一些注解自动验证

现在用这个不知道该怎么设置验证表单系统?

哪位前辈可以指点一二迷茫

最佳答案

我的是MVC4的,应该差不多,实体类代码和验证都放在tt模版文件里,model.tt

你先找到可以自动生成命名空间的方法,导入MVC验证的命名空间,就是下面的

using System.ComponentModel.DataAnnotations;

foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
using System.ComponentModel.DataAnnotations;

<#=codeStringGenerator.EntityClassOpening(entity)#>
{
<#

然后找到那个自动生成属性的方法,在里面加上下面的验证,实体类中就会自动显示验证了

var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
// begin max length attribute
if (code.Escape(edmProperty.TypeUsage) == "string")
{
int maxLength = 0;
if (edmProperty.TypeUsage.Facets["MaxLength"].Value != null && Int32.TryParse(edmProperty.TypeUsage.Facets["MaxLength"].Value.ToString(), out maxLength))
{

#>
[StringLength(<#=code.CreateLiteral(maxLength)#>, ErrorMessage="must be less than <#=code.CreateLiteral(maxLength)#> length")]
<#
}

if (edmProperty.ToString().ToLower() == "email")
{
#>
[RegularExpression(@"^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$",
ErrorMessage = "must be correct email")]
<#
}
else if (edmProperty.ToString().ToLower() == "website")
{
#>
[RegularExpression(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?",
ErrorMessage = "must be correct website")]
<#
}
}
else if (code.Escape(edmProperty.TypeUsage) == "System.DateTime"||code.Escape(edmProperty.TypeUsage) == "Nullable<System.DateTime>")
{
#>
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
<#
}
else if (code.Escape(edmProperty.TypeUsage) == "Nullable<int>"||code.Escape(edmProperty.TypeUsage) == "int")
{
#>
[Range(0, int.MaxValue, ErrorMessage = "must be digit")]
<#
}
else if (code.Escape(edmProperty.TypeUsage) == "Nullable<decimal>"||code.Escape(edmProperty.TypeUsage) == "decimal")
{
#>
[Range(0, double.MaxValue, ErrorMessage = "must be number")]
<#
}

// begin required attribute
if ( edmProperty.TypeUsage.Facets["Nullable"].Value.ToString() =="False")
{
#>
[Required]
<#
}
#>
<#=codeStringGenerator.Property(edmProperty)#>

<#
}
// ConfirmPassword
if (entity.Name.ToString() =="User")
{
#>
[Compare("Password", ErrorMessage = "must match password")]
[StringLength(500, ErrorMessage = "must be less than 500 length")]
[Required]
public string ConfirmPassword { get; set; }
<#
}
}

分享到:

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

Copyright (C) 360java 360java.com, All Rights Reserved.

苏ICP备16022210号