我可以使用data-val true分别验证每个文本框但是如何进行多字段验证?我想一起验证名字和姓氏。这两个字段都是必需的我正在使用guid生成一个唯一的id,因此值可以传递给控制器。
<input type="text" data-val="true" data-val-required="This field is required." name="FormResponse.NameResponse[@guid].FirstName" />
<span data-valmsg-for="FormResponse.NameResponse[@guid].FirstName" data-valmsg-replace="true"></span>
<input type="text" data-val="true" data-val-required="This field is required." name="FormResponse.NameResponse[@guid].LastName" />
<span data-valmsg-for="FormResponse.NameResponse[@guid].LastName" data-valmsg-replace="true"></span>
答案 0 :(得分:1)
要在服务器端验证(在请求绑定到ViewModel时),请实现IValidatableObject
:
using System.ComponentModel.DataAnnotations;
public class MyViewModel : IValidatableObject {
// note that we do not have a [Required] attribute here,
// or we would show two validation messages if one property is not set
public string FirstName { get; set; }
public string LastName { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
if (string.IsNullOrWhiteSpace(FirstName) ||
string.IsNullOrWhiteSpace(LastName)) {
yield return new ValidationResult(
"Both first and last name are required!",
new[] { "FirstName", "LastName" }
);
}
}
}
此验证方法生成的消息可以使用@Html.ValidationSummary()
呈现。它将在验证失败的服务器往返之后显示。
您可以通过调用ModelState.IsValid
来测试模型在控制器中是否有效。
答案 1 :(得分:0)
使用ViewModel,并在submit / focusOut上验证。