2013-08-06 19 views
-2

我正在使用JQuery,KnockOutJs等创建一个ASP.NET MVC应用程序。 我有一个注册和使用模型仅客户端验证。在单行中合并验证汇总(单行中所有需要验证,单行中所有无效字段验证等)

public class SignUp 
    { 
    [Required(ErrorMessageResourceType = typeof(Messages), ErrorMessageResourceName = MessagesConst.UserNameIsRequired, AllowEmptyStrings = false)] 
    [StringLength(30, ErrorMessageResourceName = MessagesConst.UserNameLength, ErrorMessageResourceType = typeof(Messages))] 
    [RegularExpression(@"^[a-zA-Z ]*$", ErrorMessageResourceType = typeof(Messages), ErrorMessageResourceName = MessagesConst.OnlyAlphabetsAndSpaceAreAllowed)] 
    public string UserName { get; set; } 

    [RegularExpression(@"^\s*[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,4})[ ]*$", ErrorMessageResourceType = typeof(Messages), ErrorMessageResourceName = MessagesConst.InvalidEmail)] 
    [Required(ErrorMessageResourceType = typeof(Messages), ErrorMessageResourceName = MessagesConst.EmailIsRequired, AllowEmptyStrings = false)] 
    [StringLength(256, ErrorMessageResourceName = MessagesConst.EmailLength, ErrorMessageResourceType = typeof(Messages))] 
    public string Email { get; set; } 

    [DataType(DataType.Password)] 
    [StringLength(50, ErrorMessageResourceName = MessagesConst.PasswordRange, ErrorMessageResourceType = typeof(Messages),MinimumLength = 6)] 
    [Required(ErrorMessageResourceType = typeof(Messages), ErrorMessageResourceName = MessagesConst.PasswordRequired, AllowEmptyStrings = false)] 
    public string Password { get; set; } 

    [DataType(DataType.Password)] 
    [Compare("Password", ErrorMessageResourceName = MessagesConst.InvalidConfirmPassword, ErrorMessageResourceType = typeof(Messages))] 
    public string ConfirmPassword { get; set; } 

    public bool IsNewsLetter { get; set; } 

    public bool RememberMe { get; set; } 
} 

我在视图上显示验证摘要。

@using (Html.BeginForm("Registration", "Home", FormMethod.Post, new { id = "frmRegistration" })) 
    { 
     <div class="msg"> 
      @Html.ValidationSummary(false) 
     </div> 
     <h1 class="title">@UserResource.lblSignUp</h1> 
     <div class="content_box signup"> 
      <div class="sign_up"> 
       <div class="left"> 
        <div class="logo"> 
         <a href="/" title="Home"> 
                 </a> 
        </div> 

        <div class="feat_text"> 
         <h1>@LayoutResources.tglnCF</h1> 
         <p class="subtitle">@LayoutResources.tglnSubTitleCF</p> 
        </div> 

        <div class="bottom_box"> 
         <strong>@UserResource.lblAlreadyAccountOnSocialnetwork</strong><br> 
         <span class="sing_in_direct"><a href="/Login">@UserResource.lblSignIn</a> directly from here.</span> 
        </div> 
       </div> 
       <div class="right"> 

        @*Remove Placeholders for validation issue.*@ 

        <div class="control-group"> 
         <label class="blue">@UserResource.lblUserName</label> 
         <div class="controls"> 
          @Html.TextBoxFor(m => m.UserName, new { @data_bind = "value:UserName, valueUpdate:['afterkeydown','propertychange','input']", placeholder = Placeholders.UserName, want_live_validation = true }) 
          <span class="help-inline"> 
           <span class="sprite"></span> 
          </span> 
          @*@Html.ValidationMessageFor(m => m.UserName)*@ 
         </div> 
        </div> 
        <div class="control-group"> 
         <label class="blue">@UserResource.lblEmail</label> 
         <div class="controls"> 
          @Html.TextBoxFor(m => m.Email, new { @data_bind = "value:Email, valueUpdate:['afterkeydown','propertychange','input']", placeholder = Placeholders.Email, want_live_validation = true }) 
          <span class="help-inline"> 
           <span class="sprite"></span> 
          </span> 
          @*@Html.ValidationMessageFor(m => m.Email)*@ 
         </div> 
        </div> 
        <div class="control-group"> 
         <label class="blue">@UserResource.lblPassword</label> 
         <div class="controls"> 
          @Html.PasswordFor(x => x.Password, new { @data_bind = "value:Password, valueUpdate:['afterkeydown','propertychange','input']", title = ToolTipResources.ttPassword, placeholder = Placeholders.Password, @class = "tooltip", want_live_validation = true }) 
          <span class="help-inline"> 
           <span class="sprite"></span> 
          </span> 
          @*@Html.ValidationMessageFor(m => m.Password)*@ 
          <div class="m-t5"> 
           <div data-bind="css:PasswordStrengthClass()"></div> 
           <span id='result' data-bind="text:PasswordStrengthMessage()"></span> 
          </div> 
         </div> 
        </div> 
        <div class="control-group"> 
         <label class="blue">@UserResource.lblConfirmPassword</label> 
         <div class="controls"> 
          @Html.PasswordFor(m => m.ConfirmPassword, new { @data_bind = "value:ConfirmPassword, valueUpdate:['afterkeydown','propertychange','input']", placeholder = Placeholders.ConfirmPassword, want_live_validation = true }) 
          <span class="help-inline"> 
           <span class="sprite"></span> 
          </span> 
          @*@Html.ValidationMessageFor(m => m.ConfirmPassword)*@ 
         </div> 
        </div> 

        <label class="checkbox blue" for="checkbox1"> 
         @Html.CheckBoxFor(m => m.IsNewsLetter, new { name = "check1", id = "checkTermAndPolicy" }) 
         @UserResource.lblDiscoverNewProjectWithWeeklyNewsLetter 
        </label> 
        <p class="terms_text"> 
         @UserResource.lblBySignInYouAgreeToOur <a href="/Terms/TermsOfUse.html" target="_blank">@UserResource.lblTermsOfUse</a> @UserResource.lblAnd <a href="/Terms/PrivacyPolicy.html" target="_blank">@UserResource.lblPrivacyPolicy</a>. 
        </p> 
        <div> 
         <p class="errorMassage"></p> 
        </div> 
        <input type="submit" value="SIGN UP"> 
       </div> 
       <div class="clear"></div> 
      </div> 
     </div> 
    } 

目前汇总出现像 enter image description here 但我希望像定制的所有验证火灾所需字段将显示这样的总结(用户名,电子邮件,密码的要求) 或全部确认火灾无效字段将显示为(无效的电子邮件地址用户名,电子邮件地址)。

+0

我不明白你的问题? – Liam

+0

@Liam好吧让我在图像中清除它可以看到两个必需的验证现在被解雇我想合并他们在单行像用户名,密码是必需的。 –

回答

1

您可以尝试@ Html.ValidationSummary()。ToString()。Replace(“\ r \ n”,“”).Replace(“\ n “”“”).Replace(“\ r”,“”)

我不知道验证摘要如何吐出它的l但是,所以你可以找出并减少它。

+0

但我不想往返服务器。 –

+0

内联c#代码在服务器上执行并传递给视图(没有额外的往返行程),所以这将在服务器上执行,并且此操作的结果(即您的验证汇总没有换行符)将被发送到视图。 –