私はこれにしばらく取り組んできましたが、答えを見つけることができないようです...今日、Googleは本当に役に立ちません!
私は、多くの検証を伴う多くのフォームを使用する C# Web サイトに取り組んでいます。手で入力しなければならない大きなフォーム (ただし、問題はありません)。
私が抱えている問題は、ValidationControls の Display プロパティを動的に設定したいということです。
回避策を見つけましたが、これが最善の解決策であるとは確信していません。
現在、バリデーターの表示タイプを次のように「動的」に設定する BaseValidatorControlAdapter があります。
public class BaseValidatorControlAdapter : ControlAdapter
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
System.Web.UI.WebControls.BaseValidator _control = (System.Web.UI.WebControls.BaseValidator)this.Control;
_control.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
base.Render(writer);
}
}
これは、次のような App_Browser を追加することによってトリガーされます
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.BaseValidator"
adapterType="BaseValidatorControlAdapter" />
</controlAdapters>
</browser>
</browsers>
あなたへの質問です。バリデータ コントロールの Display のデフォルト値を設定することは可能ですか。私の現在の解決策は、現在あるものを上書きするだけであり、それを変更する方法がないためです。そのため、表示オプションで何か他のものが必要であるという状況が発生した場合、それに対する解決策はありません。
これにはもっと良い解決策があるとほぼ確信しています。
どんなアドバイスでも大歓迎です!
2012 年 8 月 2 日の編集:
最終的に、デフォルトのasp.netコントロールをオーバーライドし、次のコンストラクターを追加するソリューションに落ち着きました
public controlname ()
: base ()
{
this.Display = "Dynamic";
}
これらすべてのコントロールを名前空間に追加したので、できるようになりました
<validator:RequiredField ID="RqrdFld_x" runat="server" Display="Static" />
基本的に、コントロール定義のデフォルト値をオーバーライドし、コンストラクターでデフォルト コントロールの表示値 Dynamic をオーバーライドします。