5

私の見解では、次のようになっています。

     <fieldset>
        <legend>User Registration</legend>            
        <div class="editor-label">
            @Html.LabelFor(m => m.UsrName)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(m => m.UsrName)
            @Html.ValidationMessageFor(m => m.UsrName)
        </div>
        <div class="editor-label">
            @Html.LabelFor(m => m.Pwd)
        </div>
        <div class="editor-field">
            @Html.PasswordFor(m => m.Pwd)
            @Html.ValidationMessageFor(m => m.Pwd)
        </div>
        <div class="editor-label">
            @Html.LabelFor(m => m.ReEnterPwd)
        </div>
        <div class="editor-field">
            @Html.PasswordFor(m => m.ReEnterPwd)
            @Html.ValidationMessageFor(m => m.ReEnterPwd)
        </div>            
       <fieldset>
         <legend>Location</legend>
           <span id="locationDiv"> 
           @Html.RadioButtonFor(m => m.Location, "Loc1")  @Html.Label("Loc1")
           &nbsp;&nbsp; 
           </span>
           @Html.RadioButtonFor(m => m.Location, "Loc2") @Html.Label("Loc2")               
           @Html.ValidationMessageFor(m => m.Location)
        </fieldset>         

         <fieldset>
         <legend>Role</legend>
            @Html.RadioButtonFor(m => m.Role, "User") @Html.Label("User")
           &nbsp;&nbsp; @Html.RadioButtonFor(m => m.Role, "Admin") @Html.Label("Admin")
            @Html.ValidationMessageFor(m => m.Role)
         </fieldset>  

        <p>
            <input type="submit" value="Register User" />
        </p> 
    </fieldset>

すべてのフィールドに入力しなくても、すべて必須であるにもかかわらず、コントローラーに送られます。と思った

    @Html.ValidationMessageFor

それを防ぐことになっていた。

    [Required]
    public string Location { get; set; }

    [Required]
    public string Role { get; set; }

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

    [Required]
    [StringLength(50, MinimumLength = 5, ErrorMessage = "Must have a minimum length of 5.")]
    public string Pwd { get; set; }

    [Required]
    [Display(Name = "Re-enter Password")]
    [StringLength(50, MinimumLength = 5, ErrorMessage = "Must have a minimum length of 5.")]
    [Compare("Pwd", ErrorMessage = "The password and re-entered password do not match.")]
    public string ReEnterPwd { get; set; }
4

2 に答える 2

21

ビューには次のスクリプトを含める必要があります。

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
于 2013-01-23T20:31:21.363 に答える
3

スクリプトセクションのビューの下部にJQuery検証バンドルを含める必要がありました。

これは、ログインと認証用のすべてのベイクインビューに存在しますが、カスタムビューに手動で追加する必要があることに気付きました。

    @section scripts{
    @Scripts.Render("~/bundles/jqueryval")
}
于 2019-03-12T22:18:23.003 に答える