5

私はエンティティフレームワーク4でAsp.Net MVC 2を使用しています。状況は次のとおりです。チェックボックスとテキストボックス(日付ピッカー)があります。チェックボックスがオンの場合、テキストボックスは必須です。チェックボックスが false の場合、テキストボックスは不要です。
チェックボックス True => テキストボックスが必要
チェックボックス False => テキストボックスは不要

<%:Html.CheckBoxFor(model => model.oEnvironment.Remediate) %>
<%= Html.TextBoxFor(model => model.oEnvironment.DatePick)%>

ValidationAttribute を作成する方法は知っていますが、チェックボックスがオンになっているかどうか (エンティティ修復属性が true の場合) を検証し、必要に応じて DatePick フィールドを配置する検証クラスを作成する方法がわかりません。

何か案が ?

4

4 に答える 4

2

クライアントの検証が必要ない場合は、ModeState.AddModelError(コントローラーで)ロジックをテストするために使用することをお勧めします。

何かのようなもの:

[HttpPost]
public ActionResult Edit(MyModel model)
{
        if (model.Remediate && string.IsNullOrEmpty(model.DatePick))
            ModelState.AddModelError("DatePickRequired", "DatePick is required");
        if (!ModelState.IsValid)
            return View(model);
        return View();
}

Gtz、
Stéphane。

于 2011-06-17T21:06:31.557 に答える
0

まったく別のアプローチとして、Fluent Validation プロジェクトhttp://fluentvalidation.codeplex.com/を見ることができます。これは、コントロール コンテナーhttp://fluentvalidation.codeplex.com/wikipage?titleの反転を介して MVC とうまく連携します。 =mvc&referringTitle=ドキュメントhttp://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container/

これにより、これと同様のルールを非常にうまくコーディングできるようになるはずです.IOCの記事では、MVCに統合する方法を示しています<3

(MVC2と述べたように厳密には答えではありませんが、モデルレベルの検証をサポートしているため、MVC3にアップグレードするとこれも簡単になりますhttp://www.asp.net/mvc/mvc3#BM_Model_Validation_Improvements

于 2011-06-15T08:58:08.793 に答える
0

モデルにIDataErrorInfoインターフェイスを実装できるかもしれませんが、私自身はこれを試したことはありません。

于 2011-03-16T20:58:00.757 に答える
0

複雑な検証の場合は、アクション (またはサーバー側の任意の場所) で検証を実行するだけです。

于 2011-06-18T04:37:26.650 に答える