首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未触发IValidatableObject

未触发IValidatableObject
EN

Stack Overflow用户
提问于 2011-09-21 23:52:41
回答 1查看 2.4K关注 0票数 1

我正在尝试使用这里描述的http://davidhayden.com/blog/dave/archive/2010/12/31/ASPNETMVC3ValidationIValidatableObject.aspx的IValidatableObject。

但是当我尝试验证时,它不会触发,ModelState.IsValid始终是true

以下是我的模型代码:

代码语言:javascript
复制
[MetadataType(typeof(RegistrationMetaData))]
public partial class Registration : DefaultModel
{
    [Editable(false)]
    [Display(Name = "Property one")]
    public int PropertyOne { get; set; }
}

public class RegistrationMetaData :IValidatableObject
{
    [Required(ErrorMessage = "Customer no. is required.")]
    [Display(Name = "Customer no.")]
    public string CustomerNo { get; set; }

    [Display(Name = "Comments")]
    public string Comments { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (new AccountModel().GetProfile(CustomerNo) == null)
            yield return new ValidationResult("Customer no. is not valid.", new[] { "CustomerNo" });
    }
}

我扩展了一个名为Registration的LINQ to SQL表,我的第一个猜测是这在Meta类上是不可能的,但我不确定?

我没有得到任何错误,它构建得很好,但是Validate方法不会触发。我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-22 00:00:56

这是因为应该实现IValidatableObject而不是RegistrationMetaData的是Registration模型

代码语言:javascript
复制
[MetadataType(typeof(RegistrationMetaData))]
public partial class Registration : IValidatableObject
{
    [Editable(false)]
    [Display(Name = "Property one")]
    public int PropertyOne { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (new AccountModel().GetProfile(CustomerNo) == null)
            yield return new ValidationResult("Customer no. is not valid.", new[] { "CustomerNo" });
    }
}

public class RegistrationMetaData
{
    [Required(ErrorMessage = "Customer no. is required.")]
    [Display(Name = "Customer no.")]
    public string CustomerNo { get; set; }

    [Display(Name = "Comments")]
    public string Comments { get; set; }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7502808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档