zoukankan      html  css  js  c++  java
  • 每天学点MVC 【验证模式报错】

    最近做MVC的项目,运用DataAnnotation(using System.ComponentModel.DataAnnotations;)

    运用自带的MicrosoftAjax.js,MicrosoftMvcValidation.js

    进行客户端的验证,出现了个很有意思的问题,经过多次测试,总算发现了点点端倪

    什么都不说了,贴上代码:Models:AccountModels.cs程序自带的代码

     1  [PropertiesMustMatch("Password""ConfirmPassword", ErrorMessage = "密码和确认密码不匹配。")]
     2     public class RegisterModel
     3     {
     4         [Required]
     5         [DisplayName("用户名")]
     6         public string UserName { getset; }
     7 
     8         [Required]
     9         [ValidatePasswordLength]
    10         [DataType(DataType.Password)]
    11         [DisplayName("密码")]
    12         public string Password { getset; }
    13 
    14         [Required]
    15         [DataType(DataType.Password)]
    16         [DisplayName("确认密码")]
    17         public string ConfirmPassword { getset; }
    18 
    19         [Required]
    20         [DataType(DataType.EmailAddress)]
    21         [RegularExpression(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$", ErrorMessage = "电子邮件格式错误")]
    22         [DisplayName("电子邮箱")]
    23         public string Email { getset; }
    24     }

    Views:Register.aspx【程序自带的代码,多添加了Table标签,报错就出在Table标签中】

     1 <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MVC验证码错误.Models.RegisterModel>" %>
     2 
     3 <asp:Content ID="registerTitle" ContentPlaceHolderID="TitleContent" runat="server">
     4     注册
     5 </asp:Content>
     6 <asp:Content ID="registerContent" ContentPlaceHolderID="MainContent" runat="server">
     7     <h2>
     8         创建新帐户</h2>
     9     <p>
    10         使用以下表单创建新帐户。
    11     </p>
    12     <p>
    13         密码的长度至少为
    14         <%: ViewData["PasswordLength"] %>
    15         个字符。
    16     </p>
    17     <% Html.EnableClientValidation(); %>
    18     <% using (Html.BeginForm())
    19        { %>
    20     <%: Html.ValidationSummary(true"帐户创建不成功。请更正错误并重试。") %>
    21     <div>
    22         <fieldset>
    23             <legend>帐户信息</legend>
    24             <div class="editor-label">
    25                 <%: Html.LabelFor(m => m.UserName) %>
    26             </div>
    27             <div class="editor-field">
    28                 <%: Html.TextBoxFor(m => m.UserName) %>
    29                 <%: Html.ValidationMessageFor(m => m.UserName) %>
    30             </div>
    31             <div class="editor-label">
    32                 <%: Html.LabelFor(m => m.Email) %>
    33             </div>
    34             <div class="editor-field">
    35                 <%:Html.LabelFor(m=>m.Email) %>
    36                 <%: Html.TextBoxFor(m => m.Email) %>
    37                 <%: Html.ValidationMessageFor(m => m.Email) %>
    38             </div>
    39             <div class="editor-label">
    40                 <%: Html.LabelFor(m => m.Password) %>
    41             </div>
    42             <div class="editor-field">
    43                 <%: Html.PasswordFor(m => m.Password) %>
    44                 <%: Html.ValidationMessageFor(m => m.Password) %>
    45             </div>
    46             <div class="editor-label">
    47                 <%: Html.LabelFor(m => m.ConfirmPassword) %>
    48             </div>
    49             <div class="editor-field">
    50                 <%: Html.PasswordFor(m => m.ConfirmPassword) %>
    51                 <%: Html.ValidationMessageFor(m => m.ConfirmPassword) %>
    52             </div>
    53             <p>
    54                 <input type="submit" value="注册" />
    55             </p>
    56         </fieldset>
    57         <table><!--用这样的验证的话,容易报错-->
    58           <tr>
    59                <td><%: Html.LabelFor(m => m.Email) %></td>
    60                <td><%: Html.TextBoxFor(m => m.Email) %></td>
    61                <td><%: Html.ValidationMessageFor(m => m.Email) %></td>
    62           </tr>
    63         </table>
    64     </div>
    65     <% } %>
    66 </asp:Content>

     如果table标签存在的话,在table标签的Email地址栏输入信息的时候,只要Email地址一输入错误,就会被卡死,就必须被迫关闭浏览器了

    所以:个人建议,如果运用这个验证的话,尽量少用Table标签,尽量用Div来实现 

  • 相关阅读:
    bootstrap
    史上最全Html和CSS布局技巧
    三种实现左右固定,中间自适应的三栏布局方式
    网页布局常用样式属性
    去除inline-block间隙的几种方法
    HTML&CSS——使用DIV和CSS完成网站首页重构
    I want to be a Great Web Front-end Developer
    js常用函数汇总(不定期更新)
    关于git stash的应用总结
    vue 自定义指令
  • 原文地址:https://www.cnblogs.com/bingzisky/p/2240972.html
Copyright © 2011-2022 走看看