1

ユーザー登録フォームとログインフォームがあります。明らかに登録フォームで検証したいのですが、ログインフォームで検証したくありません。ログインフォームのJSで検証することに気づきました。IEは、ユーザーが5を超える長さのパスワード(つまり、検証で設定したもの)を入力するまで、フォームを送信しようとさえしません。これを無効にするにはどうすればよいですか?

ログインフォーム:

@using (Html.BeginForm("Login", "Users", FormMethod.Post, new { @class = "well"})) {

        <legend>Login</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.Email, new { @placeholder = "Email" })
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Password)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.Password, new { @placeholder = "Password" })
        </div>

        <label class="checkbox">
            @Html.CheckBoxFor(model => model.HasRememberMeOn) Remember me
        </label>


        if (ViewData["ErrorMessage"] != null)
        {
                <p>@ViewData["ErrorMessage"]</p>
        }
        <p>
            <input type="submit" value="Login" />
        </p>

}

モデル:

[Required]
        [StringLength(20, MinimumLength=5)]
        [Username(ErrorMessage="Username must: Contain at least one letter, no spaces, no special characters")]
        public string Username { get; set; }

        [NotMapped]
        [StringLength(25, MinimumLength = 5)]
        public string Password { get; set; }

        [Required(ErrorMessage="Password is required")]
        public string HashedPassword { get; set; }

        [Required]
        [StringLength(50, MinimumLength = 3)]
        public string Email { get; set; }

        [NotMapped]
        [Compare("Email", ErrorMessage = "Your emails don't match")]
        [DisplayName("Confirm email")]
        public string Email2 { get; set; }

        public Boolean IsActivated { get; set; }

        [DisplayName("Date joined")]
        public DateTime DateCreated { get; set; }

        [Required]
        [StringLength(50, MinimumLength = 2)]
        [DisplayName("Real name")]
        public string Name { get; set; }
4

1 に答える 1

4

正しい解決策は、必須属性などを使用せずにログイン フォームに別のモデルを使用することです。また、ログインに必要なのはユーザー名とパスワードだけなので、登録モデルを使用するのは得策ではありません。

于 2012-08-18T05:11:52.887 に答える