FluentValidationを含む単純なモデルを作成しましたが、機能していないようです。
- 私のデータベースは空の名前で更新され、
TryUpdateModel()
- フォームを送信してもクライアント側の検証エラーは発生しません
追加しようとしましたが、クラスを使用して追加してもFluentValidationModelValidatorProvider.Configure();
見つからApplication_Start()
ないことがわかります。FluentValidationModelValidatorProvider
モデルクラスの上に追加しようとしまし[Validator(typeof(Category))]
たが、何もしませんでした。これは私が情報を探していたリソースです。
モデル
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
virtual public ICollection<Image> Images { get; set; }
}
public class CategoryValidator : AbstractValidator<Category>
{
public CategoryValidator()
{
RuleFor(x => x.Name).NotEmpty().WithMessage("Category name is required.");
}
}
コントローラ
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Category c)
{
var category = _db.Categories.Where(x => x.ID == c.ID).SingleOrDefault();
if (category == null) return HttpNotFound();
// Update model and return to category list
if (TryUpdateModel(category)) // it passes with empty name and saves changes
{
_db.SaveChanges();
return RedirectToAction("index", "category");
}
// Something is wrong, return view back
return View(c);
}