我需要验证3个或更多输入字段(至少需要一个).例如,我有电子邮件,传真,电话.
我需要至少填写一个.我需要服务器和客户端'不显眼的验证'.请帮忙.我查看了"比较"方法并尝试修改它但没有运气.请帮忙.谢谢
题
我已经创建了服务器端属性级别验证属性.但是,我没有将它应用于单个字段,而是将其应用于List.这允许我作为一个整体验证模型.
我现在需要知道如何使用MVC 3中内置的不显眼的客户端验证将其转换为工作.
我目前的代码如下,以说明我的问题......
脚本
基本方案是按GroupNo字段分组的List中每行的所有Quantity值的总计.如果任何组的总和超过10,则应显示错误.
我在前一篇文章中得到了一个答案,使得这个工作服务器端使用针对List的验证属性...
该模型:
public class ItemDetails
{
public int SerialNo { get; set; }
public string Description { get; set; }
public int GroupNo { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}
public class MyViewModel
{
[EnsureMaxGroupItems(10, ErrorMessage = "You cannot have more than 10 items in each group")]
public IList<ItemDetails> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和验证属性本身:
[AttributeUsage(AttributeTargets.Property)]
public class EnsureMaxGroupItemsAttribute : …Run Code Online (Sandbox Code Playgroud) validation asp.net-mvc-validation unobtrusive-validation asp.net-mvc-3
我创建了一个从ValidationAttribute派生的自定义验证器.我的undertsandng是它将为客户端脚本生成足够的元数据以自动验证(使用jquery.validate).自定义验证器在服务器端正常工作.但它不会在客户端激发错误消息.(其他默认验证器,如"StringLength"在客户端也正常工作.)我们如何纠正它?
public class Person
{
[Required(ErrorMessage = "First name required")]
public string FirstName { get; set; }
[CustomStartLetterMatch("FirstName")]
[StringLength(5,ErrorMessage = "Must be under 5 characters")]
public string LastName { get; set; }
[Range(18,50,ErrorMessage="Must be between 18 and 50")]
public int Age { get; set; }
}
public sealed class CustomStartLetterMatch : ValidationAttribute
{
private const string _defaultErrorMessage = " First letter of '{0}' must be same as first letetr of '{1}'";
private string _basePropertyName;
public CustomStartLetterMatch(string basePropertyName)
: base(_defaultErrorMessage)
{ …Run Code Online (Sandbox Code Playgroud)