Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 使用Lightspeed进行MVC3验证_Validation_Asp.net Mvc 3_Lightspeed - Fatal编程技术网

Validation 使用Lightspeed进行MVC3验证

Validation 使用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

我的ORM(LightSpeed)为动物表生成这个,带有名称和年龄。使用MVC3和Razor

   [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());