0

我收到以下错误:

    Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required

我不知道为什么,我已经阅读了一些关于自定义验证和 ninject 的内容,但我不认为是这样。

我正在创建一个自定义帐户管理系统,管理员可以在其中创建/编辑用户。我正在使用ASP.NET Membership, Role, Profile. 当您创建一个带有Internet勾选的新应用程序时,它会创建所有帐户内容。我试图做的只是重用RegisterModel我的AccountManagement Area. 但随后错误开始出现,我没有任何自定义验证提供程序或任何东西。错误/异常也出现在Account Views(由 MVC 模板创建的)中。

错误发生在视图的这一行:

<div class="editor-label">
    @Html.LabelFor(model => model.User.UserName)
</div>
<div class="editor-field">
    @Html.TextBoxFor(model => model.User.UserName) <!-- THIS LINE -->
    @Html.ValidationMessageFor(model => model.User.UserName)
</div>

我的模型是一个ViewModel具有属性的类:

public RegisterModel User {get;set;}

我已经编写了整个网站,除了重用RegisterModel. 从那以后,我尝试创建一个全新的Model被调用NewUserModel并仅在Area无济于事的情况下引用它。

我使用DependencyResolvertoNinject用作我的 IoC/DI。我无法想象这是一个问题......

模型:

namespace MyApplication.Areas.AccountManagement.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;

    public class NewUserModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [Display(Name = "First Name")]
        public string FirstName { get; set; }

        [Required]
        [Display(Name = "Last Name")]
        public string LastName { get; set; }

        [Required, RegularExpression(@"[0-9]{8}", ErrorMessage = "Please enter in an 8 digit Intel Worldwide Id")]
        [Display(Name = "WWID")]
        public string WWID { get; set; }

        [Required]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email address")]
        public string Email { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [System.Web.Mvc.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }
}
4

2 回答 2

0

如果对一个属性应用了多个验证规则,通常会出现这种类型的问题。您可以检查以下内容:

  1. 如果有任何其他自定义验证器正在验证模型,请查找并检查对 NewUserModel 的所有引用。
  2. 检查您的 NewUserModel 继承/实现了什么
于 2013-07-30T15:37:24.730 回答
0

出现此错误是因为将 Ninject.MVC3 从 nuget 添加到项目中。

这与 Ninject 如何注入验证有关,或者这是我可以在网上找到的最佳答案!

我从我的应用程序中完全删除了 Ninject,然后重新添加了 Ninject(正常的),一切正常!

于 2013-07-31T10:24:59.493 回答