私にとってはうまくいきます。手順は次のとおりです。
- 既定の Visual Studio テンプレートを使用して、新しい ASP.NET MVC 3 RTM プロジェクトを作成します。
- 最新のFluentValidation.NET をダウンロードします
FluentValidation.dll
およびアセンブリを参照しFluentValidation.Mvc.dll
ます (.zip 内に MVC2 と MVC3 の 2 つのフォルダーがあることに注意してください。適切なアセンブリを選択してください)。
モデルを追加します。
[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
public string Title { get; set; }
}
および対応するバリデータ:
public class MyViewModelValidator : AbstractValidator<MyViewModel>
{
public MyViewModelValidator()
{
RuleFor(x => x.Title)
.NotEmpty()
.WithMessage("Title is required")
.Length(1, 5)
.WithMessage("Title must be less than or equal to 5 characters");
}
}
に追加Application_Start
:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(
new FluentValidationModelValidatorProvider(new AttributedValidatorFactory()));
ModelMetadataProviders.Current = new FluentValidationModelMetadataProvider(
new AttributedValidatorFactory());
コントローラーを追加します。
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
および対応するビュー:
@model SomeApp.Models.MyViewModel
@{
ViewBag.Title = "Home Page";
}
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.Title)
@Html.ValidationMessageFor(x => x.Title)
<input type="submit" value="OK" />
}
ここで、タイトル入力を空のままにしてフォームを送信してみてください => クライアント側の検証が開始され、タイトルが必要ですというメッセージが表示されます。ここでテキストの入力を開始します => エラー メッセージが消えます。入力ボックスに 5 文字を超える文字を入力すると、タイトルは 5 文字以下でなければなりませんという検証メッセージが表示されます。したがって、すべてが期待どおりに機能するようです。