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無駄にしようとしました。

をIoC/DI としてDependencyResolver使用しています。Ninjectそれが問題になるとは思えない……。

モデル:

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 に答える