Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net自定义验证程序控件_Asp.net_Webforms - Fatal编程技术网

Asp.net自定义验证程序控件

Asp.net自定义验证程序控件,asp.net,webforms,Asp.net,Webforms,这是我的问题: 我们对某些字段使用自定义验证器。现在我们要更改验证标记。现在这是这样的: 电子邮件格式不正确 我可以改变这个标记吗? 例如,添加一些元素 UPD:我不是在寻找一次性的解决方法。(请参阅MikeSmithDev答案的讨论)用于更改CustomValidator的呈现方式。您将需要覆盖RenderBeginTag和renderndtag方法,以在默认范围内呈现div public class CustomValidatorAdapter : WebControlAdapter {

这是我的问题: 我们对某些字段使用自定义验证器。现在我们要更改验证标记。现在这是这样的:
电子邮件格式不正确

我可以改变这个标记吗? 例如,添加一些
元素

UPD:我不是在寻找一次性的解决方法。(请参阅MikeSmithDev答案的讨论)

用于更改
CustomValidator
的呈现方式。您将需要覆盖
RenderBeginTag
renderndtag
方法,以在默认范围内呈现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
文件:

将新的
浏览器文件
添加到项目中。它将驻留在
App\u浏览器
文件夹中。然后用以下声明替换内容:

<browsers>
    <browser refID="Default">
            <controlAdapters>
                <adapter controlType="System.Web.UI.WebControls.CustomValidator" 
                         adapterType="<your namespace>.CustomValidatorAdapter" />
            </controlAdapters>
    </browser>
</browsers>

用于更改
CustomValidator
的呈现方式。您将需要覆盖
RenderBeginTag
renderndtag
方法,以在默认范围内呈现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
文件:

将新的
浏览器文件
添加到项目中。它将驻留在
App\u浏览器
文件夹中。然后用以下声明替换内容:

<browsers>
    <browser refID="Default">
            <controlAdapters>
                <adapter controlType="System.Web.UI.WebControls.CustomValidator" 
                         adapterType="<your namespace>.CustomValidatorAdapter" />
            </controlAdapters>
    </browser>
</browsers>

您可以从
BaseValidator
CustomValidator
类继承并重写
Render
方法,然后生成所需的任何标记

public class MyCustomValidator : CustomValidator
{
    protected override void Render(HtmlTextWriter writer)
    {
        writer.RenderBeginTag("div");
        base.Render(writer);
        writer.RenderEndTag();
    }
}

您可以从
BaseValidator
CustomValidator
类继承并重写
Render
方法,然后生成所需的任何标记

public class MyCustomValidator : CustomValidator
{
    protected override void Render(HtmlTextWriter writer)
    {
        writer.RenderBeginTag("div");
        base.Render(writer);
        writer.RenderEndTag();
    }
}

你到底是什么意思?您可以将类(
CssClass
)应用于验证器。另外,RegularExpressionValidator也适用于电子邮件。@MikeSmithDev我现在了解了
CssClass
,但我需要使用
使用
div
和其他html元素。你的确切意思是什么?您可以将类(
CssClass
)应用于验证器。另外,RegularExpressionValidator也适用于电子邮件。@MikeSmithDev我现在了解了
CssClass
,但我需要使用
使用
div
和其他html元素。