我想在.aspx文件中获取“必填字段验证器”的状态。
当我说状态时,我并不是说它在内容方面是有效还是无效,而是在是否启用。
我知道可以设置启用/禁用状态
ValidatorEnable(control, true);
或
ValidatorEnable(control, false);
那么有没有办法知道它是启用还是禁用?
提前致谢。
答案 0 :(得分:1)
您可以在客户端执行此操作。因此,假设您有一个必需的字段验证器:
<asp:TextBox ID="txtName" runat="server" ClientIDMode="Static"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqValName" ControlToValidate="txtName" runat="server"
CssClass="validation" ErrorMessage="*Required">
</asp:RequiredFieldValidator>
然后ASP.NET 4.0为您生成以下JavaScript:
var reqValName = document.all ? document.all["reqValName"] : document.getElementById("reqValName");
reqValName.controltovalidate = "txtName";
reqValName.errormessage = "*Required";
reqValName.enabled = "False"; // <---- HERE. Set to false on server side.
reqValName.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
reqValName.initialvalue = "";
如您所见,如果您禁用验证程序,则会生成reqValName.enabled = "False";
,但如果您启用验证程序,则该行不会显示。
因此,您可以检查该变量的值以确定它是否已启用。注意,它的值是一个字符串值,您可能需要将检查JavaScript放在页面底部。事实上,无论如何将所有JavaScript放在页面底部都是一件好事(before closing body tag)。
仅供参考,如果您使用的是ASP.NET 4.5,则可以更轻松地检查它,因为该属性被放入span
元素的data-val-enabled
属性而不是JavaScript变量属性。请参阅ASP.NET 4.5上生成的HTML。
<span class="validation" id="reqValName" style="visibility: hidden;" data-val-initialvalue=""
data-val-evaluationfunction="RequiredFieldValidatorEvaluateIsValid" data-val="true" data-val-enabled="False"
data-val-errormessage="*Required" data-val-controltovalidate="txtName">