で変更しましたが、 では、値はファイルに従って構成されたクラスから取得されていることRegisterModel
に注意してください。Register View
Membership
Membership
Provider
web.config
だから、あなたのweb.config
ファイルをチェックしてください。次のコードがあります。
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ApplicationServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6" //Change This
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
ここも変更minRequiredPasswordLength = "8"
するとうまくいきます。
また
に変更を加えたくない場合でも、以下のようMembership Provider
に独自のカスタム属性を記述してこれを行うことができます。MinPasswordLength
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter , AllowMultiple = false, Inherited = true)]
public sealed class MinRequiredPasswordLengthAttribute : ValidationAttribute, IClientValidatable
{
private readonly int _minimumLength = Membership.MinRequiredPasswordLength;
public override string FormatErrorMessage(string name)
{
return String.Format(CultureInfo.CurrentCulture, ErrorMessageString, name, _minimumLength);
}
public override bool IsValid(object value)
{
string password = value.ToString();
return password.Length >= this._minimumLength;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
return new[]{ new ModelClientValidationStringLengthRule(FormatErrorMessage(metadata.GetDisplayName()), _minimumLength, int.MaxValue)
};
}
}
次に、代わりに DataAnnotationRegisterModel
を使用するように更新します。MinRequiredPasswordLength
[Required]
[MinRequiredPasswordLength(ErrorMessage = "The {0} must be at least {1} character(s) long.")]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }