我在客户端上使用 JS 填充 DropDownList 并使用RequiredFieldValidator 进行验证。
这在客户端上工作正常,但 Page.IsValid 在服务器上始终返回 false。
这是因为所选值首次提供给页面时不在 DropDownList 中吗?
解决这个问题最简单的方法是什么? (我需要打开服务器验证)
最佳答案
Is this because the selected value wasn't in the DropDownList when it was first served to the page?
是的。您可能会注意到,当您进行回发时,您的下拉列表将不包含任何项目,是的,这是因为您在客户端添加项目。服务器完全不知道您添加到客户端控件的任何项目。因此,您的服务器验证将始终失败,因为该字段是必需的。
事实上,使用客户端脚本动态添加项目将触发 EventValidation 来提示可能存在安全问题,并且您必须设置 EnableEventValidation
至false
在你的<%@ Page %>
指令才能发布。
解决这个问题的最佳方法是
在服务器端生成您的项目,或者
不使用服务器控件(使用常规的非 asp.net 选择列表)并通过查看发布的值在服务器上手动验证它。
关于ASP.NET 验证问题 - DropDownList 在客户端上动态填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2731773/