我一直在研究这个问题已经有一段时间了,但我似乎无法找到答案...... Google今天对我没有帮助!
我正在使用一个C#网站,该网站使用了很多表单并对其进行了大量验证。必须手工输入的大型表格(虽然没有问题)。
我遇到的问题是我总是希望我的ValidationControls将Display Property设置为动态。
我找到了解决办法,但我不相信这是最好的解决方案。
目前我有一个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值。
答案 0 :(得分:2)
您可以在Page_Init
事件中使用此类代码:
foreach(Control control in Page.Controls){
if(control is System.Web.UI.WebControls.BaseValidator)
{
control.Display = "Static";
}
}
它将找到所有控件并相应地设置Display
属性。
答案 1 :(得分:2)
此link应该有助于解决您的问题。
您可以使用外观文件为.NET站点上的Web控件设置默认值。
我在App_Theme文件夹中添加了一个名为DefaultTheme的文件夹,并添加了一个名为Skin.skin的文件,其中包含以下内容:
<asp:RequiredFieldValidator runat="server" Display="Dynamic" />
<asp:CompareValidator runat="server" Display="Dynamic" />
<asp:RegularExpressionValidator runat="server" Display="Dynamic" />
..允许我在我的网站上为许多不同的验证器(或其他控件)设置默认设置。