首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >asp:RequiredFieldValidator不验证隐藏字段

asp:RequiredFieldValidator不验证隐藏字段
EN

Stack Overflow用户
提问于 2011-07-07 16:45:45
回答 6查看 23.1K关注 0票数 22

看起来ASP.NET验证器并不验证隐藏字段。我收到这样的消息:

无法验证“”

“”的ControlToValidate属性引用的hiddenFieldValidator控件“”hiddenField“”。“”

我在我的页面中有一个<asp:HiddenField>,它在客户端填充了一些值。我需要它在服务器上出现一次,所以我给它添加了一个RequiredFieldValidator

但它不起作用!

在我看来,作为一种解决办法,我可以:

1.使用自定义验证器,不要将其绑定到隐藏字段,只需在OnServerValidate上调用方法即可;

2.使用带有样式display:none<asp:TextBox>,它应该可以工作。

但我想确保我没有遗漏什么。是否可以用与其他文本字段相同的方式验证隐藏字段?或许还有第三个更优雅的选择?

蒂娅!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-07 16:58:21

正如您收到的异常消息所说,似乎HiddenField控件不能直接作为标准验证控件的目标。我会使用CustomValidator变通方法。

票数 5
EN

Stack Overflow用户

发布于 2012-11-06 22:37:56

@Peter的回答让我思考,ControlPropertiesValid到底检查什么?

看看它寻找的MSDN topic,其中包括ValidationPropertyAttribute。嗯,所以如果我们只是从HiddenField派生,并用ValidationPropertyAttribute设置为Value来装饰新类(对于我的目的),那么“一切都正常”。事实的确如此。

代码语言:javascript
复制
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Partner.UserControls {
    [ValidationProperty("Value")]
    public class HiddenField2 : HiddenField {
    } // nothing else required other than ValidationProperty
}

用法-确保注册包含控件的程序集:

代码语言:javascript
复制
<%@ Register Assembly="MyApp" Namespace="MyApp.Controls" TagPrefix="sw" %>

在您的Page/UserControl内容中:

代码语言:javascript
复制
<sw:HiddenField2 ID="hidSomeImportantID" runat="server" />

所有的验证器都会用到这个。增加的好处是,如果您(像我一样)正在使用自定义验证函数,则可以很容易地计算HiddenField2.Value,因为它包含在args.Value字段中(在服务器端,这是ServerValidateEventArgs)。

票数 39
EN

Stack Overflow用户

发布于 2012-10-20 02:02:56

这是我想出的解决办法,因为不幸的是,我找不到任何可靠的方法来使用RequiredFieldValidator或CustomValidator进行开箱即用的验证。如果您将ControlToValidate属性留空,它会对您大喊大叫。您所要做的就是创建一个自定义控件,如下所示:

代码语言:javascript
复制
public class HiddenFieldValidator : RequiredFieldValidator
{
    protected override bool ControlPropertiesValid()
    {
        return true;
    }
}

通过覆盖属性valid check,使其始终返回true,它不再关心您是否正在使用HiddenField,它将从中提取值并进行验证,而不会出现问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6607984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档