我有一个包含三个单选按钮的页面,具体取决于选择了哪个按钮,我需要验证一些控件(使用必填字段验证器)。除了使用自定义验证器之外,还有什么方法可以做到这一点?
谢谢
我有一个包含三个单选按钮的页面,具体取决于选择了哪个按钮,我需要验证一些控件(使用必填字段验证器)。除了使用自定义验证器之外,还有什么方法可以做到这一点?
谢谢
ASP.NET 验证器提供了一个客户端 API,允许您:
该ValidatorEnable
函数的语法是:
ValidatorEnable(rfvMyValidator, boolState);
我在一个小例子上试过这个,它对我有用:
我有
-2 文本框:TextBox1 和 TextBox2
-RequiredFieldValidator:RequiredFieldValidator1 与 ControlToValidate="TextBox1"
-RadioButton:必需的FieldValidator1
此代码由RequiredFiledValidator 生成:
<script type="text/javascript">
//<![CDATA[
var RequiredFieldValidator1 = document.all ? document.all["RequiredFieldValidator1"] : document.getElementById("RequiredFieldValidator1");
RequiredFieldValidator1.controltovalidate = "TextBox1";
RequiredFieldValidator1.errormessage = "RequiredFieldValidator";
RequiredFieldValidator1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
RequiredFieldValidator1.initialvalue = "";
//]]>
</script>
我希望当用户单击 RadioButton1 时将验证切换到 TextBox2。
我是这样做的:
protected void Page_Load(object sender, EventArgs e)
{
RadioButton1.Attributes.Add("onclick", "RequiredFieldValidator1.controltovalidate=\"TextBox2\"");
}
将 OnSelectedIndexChanged 添加到 RadioButtonList (如果它们是单独的单选按钮控件,则添加 CheckedChanged)
在后面的代码中,.Enable
以及.Disable
特定的必填字段验证器。
Waleed,您没有指定您使用的是 ASP.Net 表单还是 ASP.Net MVC。
如果您使用的是 ASP.Net MVC,答案很简单......
首先,您应该创建一个 ModelView 类,其中应包含与您的单选按钮对应的布尔属性。
只需使用 Codeplex 上提供的 Foolproof 验证库,它应该可以开箱即用地解决您的问题:https ://foolproof.codeplex.com/
除其他外,它支持以下“必需的”验证属性/装饰:
[RequiredIf]
[RequiredIfNot]
[RequiredIfTrue]
[RequiredIfFalse]
[RequiredIfEmpty]
[RequiredIfNotEmpty]
[RequiredIfRegExMatch]
[RequiredIfNotRegExMatch]
开始很容易:
然后剩下要做的就是装饰应该使用属性有条件地验证的字段,该[RequiredIfTrue]
属性应该指向 ViewModel 中相应的单选按钮值。