我是ASP.NET新手,但我正在尝试验证表单。我的验证工作正常,但我想改变它的显示方式。我使用RequiredFieldValidator控件生成一个带有ErrorMessage属性的span标记。根据我设置某些属性的方式,span标记可以隐藏,也可以使用内联CSS显示(显示:无,可见性:隐藏等)。我不想让验证返回一个跨度,而是希望TextBox控件的CssClass根据验证结果而改变。我不想在我的标记中的任何地方使用验证相关的跨度,即使是display:none。
这可能吗?我从哪里开始实现这个目标?
谢谢!
答案 0 :(得分:2)
您无法更改RequiredFieldValidator以更新另一个控件(如文本框),它只会更新自身或ValidationSummary(如果页面上有一个。)
您需要获得所需输出的2个选项:
虽然这些选项很可能都不会为您提供您正在寻找的“纯”HTML代码而没有任何额外的span或div标签,但如果您愿意花时间编写JavaScript,它们将满足您的其他要求(或jQuery)。但是,考虑到可用的替代方案(主要是通过某种框架进行的客户端验证),您最好还是坚持使用ASP.NET验证,因为它可以在服务器端强制执行验证。
第二个选项更具挑战性,但服务器控件可以在项目的任何页面上使用,也可以包装在DLL中,以便部署在多个项目中。使用CustomValidator时,如果要复制多个控件上的功能,则会有一些复制和粘贴,这很难维护。
有关如何使用jQuery和自定义服务器控件来获取所需结果的实际示例,请转到Folding Chair Depot上的结帐页面(您需要向购物车添加商品)首先到达那里)。当您提交表单而不填写表单时,会为无效的文本框分配新的css类,这些类会更改其背景颜色。但是,因为它们是服务器控件,所以无论是否启用JavaScript,该功能都将起作用。
答案 1 :(得分:0)
这是更多的工作,但可以使用CustomValidator。因此,您可以通过验证js函数获得更多控制权。