C# 验证中需要两个字段中的一个
我有两个字段: 名字 姓氏 而且只需要其中一个。但如果两个字段都被省略,我希望两个字段都高亮显示。如果其中一个已经填写,那么模型就可以了,表格应该提交 如何做到这一点?您可以使用,它将帮助您完成类似的操作C# 验证中需要两个字段中的一个,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我有两个字段: 名字 姓氏 而且只需要其中一个。但如果两个字段都被省略,我希望两个字段都高亮显示。如果其中一个已经填写,那么模型就可以了,表格应该提交 如何做到这一点?您可以使用,它将帮助您完成类似的操作 [RequiredIf("PropertyValidationDependsOn", true)] public string PropertyToValidate { get; set; } 所有复杂验证都从继承自IValidatableObject的视图模型开始。然后重写验证,并输
[RequiredIf("PropertyValidationDependsOn", true)]
public string PropertyToValidate { get; set; }
所有复杂验证都从继承自IValidatableObject的视图模型开始。然后重写验证,并输入自己的验证规则
IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
if (String.IsNullOrWhiteSpace(FirstName) && String.IsNullOrWhiteSpace(LastName))
{
yield return new ValidationResult("A name must be entered.", new string[] { "FirstName", "LastName" });
}
}
IEnumerable IValidatableObject.Validate(ValidationContext ValidationContext)
{
if(String.IsNullOrWhiteSpace(FirstName)&&String.IsNullOrWhiteSpace(LastName))
{
返回新的ValidationResult(“必须输入名称。”,新字符串[]{“FirstName”,“LastName”});
}
}
请注意,这仅确保此规则的服务器端验证。如果您希望在客户端进行验证,则需要编写自己的JavaScript/jQuery代码来处理验证。如果您愿意在客户端进行验证 这可能会给你一个开始 HTML 防止表单在未通过验证时提交
$('input[type=submit]').bind('click', function(e) {
var isValid = false;
$("input[class='name']").each(function (key, keyValue) {
//alert(keyValue.value);
if (keyValue.value.length > 0) {
isValid = true;
$(this).css("background", "White");
}
else {
$(this).css("background", "RED");
}
})
if (!isValid) {
e.preventDefault() // prevents the form from being submitted
}
});
如果您编写自己的验证属性(相对简单),则可以在处进行测试。类似于上面的内容,或万无一失的验证或流畅的验证都可以满足这种开箱即用的要求。使用此标记,字段将以与正常验证属性相同的方式无效?是。
新字符串[]{“FirstName”,“LastName”}
参数告诉调用代码哪些字段未通过验证。
$("#btnSubmit").click(function () {
var isValid = false;
$("input[class='name']").each(function (key, keyValue) {
//alert(keyValue.value);
if (keyValue.value.length > 0) {
isValid = true;
$(this).css("background", "White");
}
else {
$(this).css("background", "RED");
}
})
if (!isValid) {
// do something
}
});
$('input[type=submit]').bind('click', function(e) {
var isValid = false;
$("input[class='name']").each(function (key, keyValue) {
//alert(keyValue.value);
if (keyValue.value.length > 0) {
isValid = true;
$(this).css("background", "White");
}
else {
$(this).css("background", "RED");
}
})
if (!isValid) {
e.preventDefault() // prevents the form from being submitted
}
});