这是我的问题: 我们对某些字段使用自定义验证器。现在我们要更改验证标记。现在这是这样的: <span id="CreateProfile_EmailValidator">Email is in Incorrect Format</span>
。Asp.net自定义验证器控件
我可以以某种方式更改此标记吗? 例如,添加一些<div>
元素?
UPD:我看了不是一次解决方法。 (请参阅MikeSmithDev的回答讨论)
这是我的问题: 我们对某些字段使用自定义验证器。现在我们要更改验证标记。现在这是这样的: <span id="CreateProfile_EmailValidator">Email is in Incorrect Format</span>
。Asp.net自定义验证器控件
我可以以某种方式更改此标记吗? 例如,添加一些<div>
元素?
UPD:我看了不是一次解决方法。 (请参阅MikeSmithDev的回答讨论)
您可以从BaseValidator
或CustomValidator
类继承并重写Render
方法,然后生成你想要的任何标记。
public class MyCustomValidator : CustomValidator
{
protected override void Render(HtmlTextWriter writer)
{
writer.RenderBeginTag("div");
base.Render(writer);
writer.RenderEndTag();
}
}
使用WebControlAdapter来更改呈现方式CustomValidator
。你会想要覆盖RenderBeginTag
和RenderEndTag
方法来渲染div的默认范围。
public class CustomValidatorAdapter : WebControlAdapter
{
protected override void RenderBeginTag(HtmlTextWriter writer)
{
writer.RenderBeginTag("div");
base.RenderBeginTag(writer);
}
protected override void RenderEndTag(HtmlTextWriter writer)
{
base.RenderEndTag(writer);
writer.RenderEndTag(); // this will close div
}
}
要将此适配器连接到您的应用程序,您有两个选项。首先是做编程的页面构造:
var adapters = Context.Request.Browser.Adapters;
var customValidatorType = typeof(CustomValidator).AssemblyQualifiedName;
var adapterType = typeof(CustomValidatorAdapter).AssemblyQualifiedName;
if (!adapters.Contains(customValidatorType))
{
adapters.Add(customValidatorType, adapterType);
}
第二个选择是使用.browser
文件:
添加新Browser File
到您的项目。它将驻留在App_Browsers
文件夹中。然后用以下声明替换内容:
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.CustomValidator"
adapterType="<your namespace>.CustomValidatorAdapter" />
</controlAdapters>
</browser>
</browsers>
你是什么意思?你可以将一个类('CssClass')应用到验证器。此外,RegularExpressionValidator适用于电子邮件。 – MikeSmithDev
@MikeSmithDev我现在谈论'CssClass',但我需要''使用'div'和其他html元素。 –