5

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);
}
4

1 に答える 1

7

FluentValidation.Mvc参照が欠落しているようです。FluentValidation.MVC4NuGetパッケージをインストールしてみてください。

次に、MVCの指示に従います。

于 2012-11-15T20:23:49.453 に答える