私にとってうまく動作します。最新のFluentValidationバージョン(2.0.0.0)とASP.NET MVC 3 RTMを使用しています。
モデルとバリ:
[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
public string Login { get; set; }
}
public class MyViewModelValidator : AbstractValidator<MyViewModel>
{
public MyViewModelValidator()
{
RuleFor(x => x.Login).NotNull().EmailAddress();
}
}
コントローラー:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
ビュー:Global.asax
で
@model AppName.Models.MyViewModel
<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.LabelFor(model => model.Login, "Login")
@Html.TextBoxFor(model => model.Login)
@Html.ValidationMessageFor(model => model.Login)
<input type="submit" value="OK" />
}
Application_Start
:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new AttributedValidatorFactory()));
}
二例:
- 空のテキストボックスを残す:
'Login' must not be empty.
検証エラーメッセージが表示されます。
- 無効な電子メールを入力してください:
'Login' is not a valid email address.
検証エラーメッセージが表示されます。
そして最終的にここにテキストボックスのために生成されたHTMLです:
<input data-val="true" data-val-regex="&#39;Login&#39; is not a valid email address." data-val-regex-pattern="^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~][email protected](?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$" data-val-required="&#39;Login&#39; must not be empty." id="Login" name="Login" type="text" value="" />
は、私はあなたの例を使用して、プロジェクトを作成しました。そして私はまだ実際のフィールド名の代わりに{PropertyName}が表示されます。私はFluentValidationバージョン(2.0.0.0)とASP.NET MVC 3バージョン3.0.11209.0 –
@Ivanを使用していますが、RTMバージョンを使用していないようです。私の 'System.Web.Mvc'アセンブリには、RTMであるバージョン「3.0.20105.0」があります。 –
@Ivan、はい、以前のバージョンはアンインストールしましたか?また、アプリケーションが正しいアセンブリを指していることを確認してください。 –