Validation 使用Lightspeed进行MVC3验证
我的ORM(LightSpeed)为动物表生成这个,带有名称和年龄。使用MVC3和RazorValidation 使用Lightspeed进行MVC3验证,validation,asp.net-mvc-3,lightspeed,Validation,Asp.net Mvc 3,Lightspeed,我的ORM(LightSpeed)为动物表生成这个,带有名称和年龄。使用MVC3和Razor [Serializable] [System.CodeDom.Compiler.GeneratedCode("LightSpeedModelGenerator", "1.0.0.0")] [System.ComponentModel.DataObject] [Table(IdColumnName="AnimalID", IdentityMethod=IdentityMethod.Ide
[Serializable]
[System.CodeDom.Compiler.GeneratedCode("LightSpeedModelGenerator", "1.0.0.0")]
[System.ComponentModel.DataObject]
[Table(IdColumnName="AnimalID", IdentityMethod=IdentityMethod.IdentityColumn)]
public partial class Animal : Entity<int>
{
[ValidatePresence]
[ValidateLength(0, 50)]
private string _name;
[ValidateComparison(ComparisonOperator.GreaterThan, 0)]
private int _age;
public const string NameField = "Name";
public const string AgeField = "Age";
[System.Diagnostics.DebuggerNonUserCode]
[Required] // ****I put this in manually to get Name required working
public string Name
{
get { return Get(ref _name, "Name"); }
set { Set(ref _name, value, "Name"); }
}
[System.Diagnostics.DebuggerNonUserCode]
public int Age
{
get { return Get(ref _age, "Age"); }
set { Set(ref _age, value, "Age"); }
}
[可序列化]
[System.CodeDom.Compiler.GeneratedCode(“LightSpeedModelGenerator”,“1.0.0.0”)]
[System.ComponentModel.DataObject]
[表(IdColumnName=“AnimalID”,IdentityMethod=IdentityMethod.IdentityColumn)]
公共部分类动物:实体
{
[验证呈现]
[验证长度(0,50)]
私有字符串\u名称;
[验证比较(ComparisonOperator.GreaterThan,0)]
私人互联网;
public const string NameField=“Name”;
public const string AgeField=“Age”;
[System.Diagnostics.DebuggerNonUserCode]
[必需]/****我手动输入此名称以获得所需的工作名称
公共字符串名
{
get{return get(ref_name,“name”);}
集合{set(ref{u name,value,“name”);}
}
[System.Diagnostics.DebuggerNonUserCode]
公共信息
{
get{return get(ref_age,“age”);}
集合{set(ref _age,value,“age”);}
}
添加了[必需]属性:
没有添加[Required]属性:(注意LightSpeed奇怪的验证呈现)
填写姓名:
在上面的图片中-顶部的验证是LightSpeed(放入ValidationSummary),侧面的验证是MVC3(放入ValidationMessageFor)
我目前只使用服务器端验证
问题:如何使LightSpeed验证在MVC3中正常工作
我认为这是这方面的问题
对于服务器端验证-您将希望使用自定义模型绑定器,该绑定器更精确地发出LightSpeed验证的错误,而不是利用DefaultModelBinder行为。请查看直接使用或修改Mvc社区代码库中的EntityModelBinder
参见链接
Jeremys回答(Mindscape有很大的支持!)
并在Global.asax注册表中使用:
EntityModelBinder 2.寄存器(typeof(MyEntity).Assembly)
Register调用设置要用于模型部件中每个实体类型的模型绑定器,以便根据需要进行修改。请参阅链接
Jeremys回答(Mindscape有很大的支持!)
并在Global.asax注册表中使用:
EntityModelBinder 2.寄存器(typeof(MyEntity).Assembly)
注册调用设置模型绑定器,用于模型部件中的每个实体类型,以便根据需要进行修改。从2011年4月4日起,您可以使用Lightspeed每晚构建进行客户端验证 创建验证程序提供程序,如下所示:
public class LightspeedModelValidatorProvider : DataAnnotationsModelValidatorProvider
{
private string GetDisplayName(string name)
{
return name; // go whatever processing is required, eg decamelise, replace "_" with " " etc
}
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes)
{
if(typeof(Entity).IsAssignableFrom(metadata.ContainerType))
{
List<Attribute> newAttributes = new List<Attribute>(attributes);
var attr = DataAnnotationBuilder.GetDataAnnotations(metadata.ContainerType, metadata.PropertyName, GetDisplayName(metadata.PropertyName));
newAttributes.AddRange(attr);
return base.GetValidators(metadata, context, newAttributes);
}
return base.GetValidators(metadata, context, attributes);
}
}
从2011年4月4日起,您可以使用Lightspeed夜间版本进行客户端验证 创建验证程序提供程序,如下所示:
public class LightspeedModelValidatorProvider : DataAnnotationsModelValidatorProvider
{
private string GetDisplayName(string name)
{
return name; // go whatever processing is required, eg decamelise, replace "_" with " " etc
}
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes)
{
if(typeof(Entity).IsAssignableFrom(metadata.ContainerType))
{
List<Attribute> newAttributes = new List<Attribute>(attributes);
var attr = DataAnnotationBuilder.GetDataAnnotations(metadata.ContainerType, metadata.PropertyName, GetDisplayName(metadata.PropertyName));
newAttributes.AddRange(attr);
return base.GetValidators(metadata, context, newAttributes);
}
return base.GetValidators(metadata, context, attributes);
}
}
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new LightspeedModelValidatorProvider());