首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IValidatableObject中使用InjectAttribute

如何在IValidatableObject中使用InjectAttribute
EN

Stack Overflow用户
提问于 2012-06-15 20:22:37
回答 1查看 347关注 0票数 1

我有这个ViewModel

代码语言:javascript
复制
public class CustomerSuscribeViewModel : IValidatableObject
{
    [DataMember(IsRequired = true)]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    public string SurName { get; set; }

    [DataMember(IsRequired = true)]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [DataMember(IsRequired = true)]
    [DataType(DataType.Password)]
    public string ConfirmPassword { get; set; }

    [DataMember(IsRequired = true)]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    [Inject]
    public IDataUsers DataUsers { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {

        if(DataUsers.Get(new UserFilter() {Email = Email}).Any())
        {
            yield return new ValidationResult(This Email is already used.",new string[]{"Email"});
        }
        if(ConfirmPassword != Password)
            yield return new ValidationResult("Please confirm your apssword", new string[] { "Password", "ConfirmPassword" });
    }
}

这个动作

代码语言:javascript
复制
[HttpPost]
        public ActionResult Suscribe(CustomerSuscribeViewModel customer)
        {
            if (!ModelState.IsValid)
                return View(customer);

问题是从来没有创建过成员DataUsers,所以我得到了一个NullReferenceException。

绑定通过以下方式完成:

代码语言:javascript
复制
Bind<IDataUsers>().To<DataUsers>();

有什么想法吗?

编辑: InjectAttribute对于我的控制器中的属性工作得很好。

环境: asp.net MVC3,Inject2.2(也许我需要更新?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 21:38:01

视图模型不是由Ninject创建的,因此inject属性被忽略。通常,视图模型应该保持简单,并且没有依赖关系。您可以使用ValidationAttributes而不是IValidatableObject来达到此目的。

有关验证属性的注入,请阅读https://github.com/ninject/ninject.web.mvc/wiki/Injection-of-validators

https://github.com/ninject/ninject.web.mvc/blob/master/mvc3/src/SampleApplication/Models/Movie/PriceRangeAttribute.cs

  • 示例

以下是如何使用ValidationAttribute实现密码与确认密码匹配的验证的示例

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11050557

复制
相关文章

相似问题

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