gpt4 book ai didi

asp.net - 从asp :validationsummary继承

转载 作者:行者123 更新时间:2023-12-04 07:08:53 25 4
gpt4 key购买 nike

我需要在页面(或控件)顶部显示格式良好的错误消息。

因此我实现了一个新创建的服务器控件的渲染方法。新创建的控件继承自 ValidationSummary。

public class AgValidationSummary : ValidationSummary
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if(this.Enabled)
{
if (Page.IsPostBack && !Page.IsValid)
{

我现在的问题是,如果一个按钮被触发并且他的属性 CausesValidation 设置为 false,我的 validationsummary 将抛出异常,因为我询问 Page.IsValid 属性(并且只有在调用 Page.validate( )。

有人解决了这个问题吗?

最佳答案

解决方案很简单:
只是不要解析 Page.IsValid flag :) 而是在您的 void Render(HtmlTextWriter writer) 中做类似的事情:

if (!this.Enabled)
{
return;
}

if (this.Page != null)
{
this.Page.VerifyRenderingInServerForm(this);
}
else
{
return;
}

var failedValidators = this.Page.Validators.OfType<BaseValidator>().Where(bv => string.Equals(bv.ValidationGroup, this.ValidationGroup) && !bv.IsValid).ToList();

if (failedValidators.Any())
{
writer.Write(this.HeaderText);
foreach (var failedValidator in failedValidators)
{
writer.Write(failedValidator.ErrorMessage);
}
}

这样做的原因:
导致回发的控件已获得有关
  • 原因验证
  • 验证组
  • 和其他东西

  • 因此 ASP.net 引擎本身将执行关联的验证器并将它们设置为 IsValid或不。

    编辑
    要摆脱原始的 HeaderText(仍然呈现):
    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
    // overwrite to hide the original HeaderText
    }

    关于asp.net - 从asp :validationsummary继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676489/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com