1

これは、最新の流暢な検証ライブラリを使用してセットアップした私のコードです。

public class ReleaseViewModelValidator : AbstractValidator<ReleaseViewModel> 
{ 
   public ReleaseViewModelValidator() {
     RuleFor(r => r.Name).NotEmpty().Length(1, 30).WithMessage("Name must not be longer than 30 chars."); 
  } 
}

[FluentValidation.Attributes.Validator(typeof(ReleaseViewModel))]
 public class ReleaseViewModel { public int ReleaseId { get; set; }

[Remote("ReleaseExists", "Release", ErrorMessage = "This name already exists.")]
public string Name { get; set; } 
public DateTime CreatedAt { get; set; } }

グローバル.ASAX:

 FluentValidationModelValidatorProvider.Configure();

見る:

 model ILMD.Web.Models.ReleaseViewModel @* Remote Validation*@ <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
 @using (Html.BeginForm("Create", "Release")) 
 {
 <p class="editor-label">@Html.LabelFor(model => model.Name)</p> 
 <p class="editor-field">@Html.EditorFor(model => model.Name)</p> 
 <p class="editor-field">@Html.ValidationMessageFor(model => model.Name)</p> 
 }

ReleaseViewModelValidator緑色の信号を表示するためのすべての単体テスト。罰金。

しかし、それほどクールではありませんが、31 文字などのライブ データを入力したり、何も入力したりしても、クライアント側のエラー メッセージは表示されません。

部分ビューに何かを含める必要がありますか? またModelState、常に正しいわけではありません。

4

1 に答える 1

1

これを試して

[FluentValidation.Attributes.Validator(typeof(ReleaseViewModelValidator))]

FluentValidation 属性バリデーターでは、実際のバリデーター ( ReleaseViewModelValidator) ではなく、ReleaseViewModel

于 2012-11-08T18:04:57.903 に答える