1

RegisterModelは以下のようにPasswordプロパティを持っています:

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

レジスタ ビューには、次のようなものがあります。

<p class="message-info">
Passwords must be at least @Membership.MinRequiredPasswordLength characters long.
</p>

MinimumLengthPasswordをの8文字に変更しましたが、以下のスクリーンショットに示すように、ビュー ページにRegisterModelのみ表示されます。6

これは MVC のデフォルト アプリケーションです。アカウント/登録アドレスでこのページにアクセスしています。ホスト アドレスはローカルです。

長さを変更するにはPassword

4

1 に答える 1

2

で変更しましたが、 では、値はファイルに従って構成されたクラスから取得されていることRegisterModelに注意してください。Register ViewMembershipMembership Providerweb.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; }
于 2013-02-06T04:15:09.533 に答える