kentico 6 カスタム登録 Web パーツを使用しており、フォームの検証を次のように機能させたい - >
on validation show: 1. 無効な各入力の横にある赤い星 2. フォームの上部に検証の概要があります。
Kentico では、feidl ごとに 1 つの検証メッセージしか許可されないため、これを解決する方法がわかりません。
ありがとう :)
kentico 6 カスタム登録 Web パーツを使用しており、フォームの検証を次のように機能させたい - >
on validation show: 1. 無効な各入力の横にある赤い星 2. フォームの上部に検証の概要があります。
Kentico では、feidl ごとに 1 つの検証メッセージしか許可されないため、これを解決する方法がわかりません。
ありがとう :)
フォームの検証をカスタマイズするか、7.0 バージョンを待つことができます ;) 7.0 バージョンは、デフォルトでそのような動作をサポートします (適切なエラーの概要と、正しくない入力を含むフィールドへのリンク/アンカーを使用)。したがって、Kentico 7.0RC を使用するか、最終バージョンを待つ可能性がある場合は、6.0 でのカスタマイズは廃止されるため、そのアプローチをお勧めします。
6.0 でこれを実現したい場合は、Kentico ビズフォームの検証メッセージに関する次の例を確認してください。
例では、使用している BizForm のコードネームは viewBiz です。変更を行う前に、Web パーツの複製を作成することをお勧めします (標準 Web パーツのコードの変更に関するドキュメント)。変更は、それらの複製されたコード ファイルに対して行われます。
protected void viewBiz_OnValidationFailed()
{
((CMS.ExtendedControls.LocalizedLabel)this.viewBiz.BasicForm.FieldErrorLabels["FirstName"]).Text="Field specific error message";
}
ご覧のとおり、エラー ラベルをハッシュ テーブルからコントロールとして取得し、そのプロパティを適切に設定する必要があります (ここではテキスト)。メインの検証メッセージを設定するには、次のコードを使用するだけです。
this.viewBiz.ValidationErrorMessage = "主なエラー メッセージ";
検証のためにフィールド値にアクセスするには、以下のコードを確認してください (この例では、フィールドは「FirstName」と呼ばれています)。
protected void viewBiz_OnAfterValidate()
{
this.viewBiz.ValidationErrorMessage = "Main error message";
string find = "FirstName";
Control cl = this.viewBiz.BasicForm.FindControl(find);
string toValidate = "";
if (cl != null)
{
TextBox tb = (TextBox)cl;
toValidate = tb.Text.ToString().Trim();
}
}
上記のすべてのメソッドをビジネスフォーム定義に登録する必要があることに注意してください。
BizForm の処理を中断した場合は、データを手動で保存する必要がある場合があります。
viewBiz.BasicForm.SaveData("redirect.to.this.url");
PS。私たちは、stackoverflow よりも頻繁にフォーラムを監視しています ;)
よろしく、 ボリス・ポチャトコ、ケンティコ