私はいくつかのWebパーツ(C# - ascx)で構成されるASP.Netページを持っています。定義上、私はページ上にいくつのWebパーツがあるか分かりません。私はこのページに追加される私の部分だけ、ページを制御しません。同じページに他の作者による部分があるかもしれませんが、それは今は重要ではありません。有効なデータを持つWebパーツに他のWebパーツの検証エラーを表示しながら保存することを許可します
ほとんどのWebパーツは情報の表示と編集用です。このような各パーツには、独自のValidationGroupとValidationSummary、および独自のSaveボタンがあります。現在の要件では、各部品を個別に保存する必要があります。これらの部分は、すべて3つの品種から同じか、または選択されてもよいが、データベースから異なるデータのサブセットを表示するように構成されている。 RequiredFieldValidatorを使用して、各パートに必須のフィールドがある場合があります。
もう1つのタイプのWebパーツがヘッダー/サマリーとして機能します。ほとんどの場合、一度表示されますが、ページのどこにでも表示されることもあれば、複数回表示されることもあります。
私がしたいのは、ページ上の他の部分のうち、満たされていない部分があるヘッダーに要約を表示することです。 (これは、適切な部分へのジャンプリンクが含まれますが、私はそれを行う方法を知っている。)ヘッダ部分からこのコードは、部品のいずれかが検証エラーがあれば、私が判断することができます:
bool foundAnyInvalid = false;
Dictionary<string, bool> Parts = new Dictionary<string, bool>();
foreach (System.Web.UI.WebControls.BaseValidator val in Page.Validators)
{
if (!Parts.ContainsKey(val.ValidationGroup))
{
Parts.Add(val.ValidationGroup, true);
Page.Validate(val.ValidationGroup);
}
if (!val.IsValid)
{
Parts[val.ValidationGroup] = false;
foundAnyInvalid = true;
}
}
を...一度にすべてのパーツを検証する必要があります。その結果、他のパーツが要件を満たしていない場合、個々のパーツを保存することはできません。
私は何を達成したいことはある:ヘッダは、常に次の
を要求される分野に欠けて検証すべてのディテールパーツは*典型的な赤の表示を持っている部品のリストが表示され
特定の詳細部分に保存をクリックすると、その部分のValidator.MessageおよびValidatorSummaryに標準的なメッセージが表示されます。
有効なパーツでユーザーが[保存]をクリックすると、他のパーツにまだデータがない場合でもデータは保存されます。
2番目の多少の関連問題として、ヘッダーには「戻る」リンクが含まれています。パーツが有効で保存されていない限り、このリンクを無効にします。 1つの質問でこれがあまりにも苦手な場合は、別途質問しますが、答えに影響を与える場合は、その点について言及する必要があります。 (私はフォームの代わりにデータベースをチェックすることでこれを検証する必要があります)
[保存]ボタンがクリックされた場合、すべての部品を保存することを検討しますが、その方法をすぐには分かりません。私がこのページに間違った方法で来ているなら、私にもそれを教えることを躊躇しないでください。
ページの各部分は、[保存]ボタンを含む一意のValidationGroupを使用します。私の問題は、ヘッダーがすべてのグループを呼び出すことです。 – Bruce