C# 如何实现一个模型来强制客户端至少填写ASP.NET MVC中两个输入中的一个
这是我的模型:C# 如何实现一个模型来强制客户端至少填写ASP.NET MVC中两个输入中的一个,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,这是我的模型: public class PhoneNumber { public long Id { get; set; } public string Tel1 { get; set; } public string Tel2 { get; set; } } 如何强制create action中的客户端填写至少一个Tel Tel1或Tel2,我不想使用任何客户端脚本或控制器代码,我只想在上面的模型中使用一些属性,如[Required]要实现此目标?这类似于下面的问
public class PhoneNumber {
public long Id { get; set; }
public string Tel1 { get; set; }
public string Tel2 { get; set; }
}
如何强制create action中的客户端填写至少一个Tel Tel1或Tel2,我不想使用任何客户端脚本或控制器代码,我只想在上面的模型中使用一些属性,如[Required]要实现此目标?这类似于下面的问题,建议您创建自定义属性 然后,您的模型可以写成:
[AtLeastOneRequired("Tel1", "Tel2", ErrorMessage="Please enter at least one value.")]
public class PhoneNumber {
public long Id { get; set; }
public string Tel1 { get; set; }
public string Tel2 { get; set; }
}
描述中确实描述了编写javascript代码来验证客户端,但如果您只想使用服务器端验证,这是可选的。这类似于下面的问题,建议您创建自定义属性 然后,您的模型可以写成:
[AtLeastOneRequired("Tel1", "Tel2", ErrorMessage="Please enter at least one value.")]
public class PhoneNumber {
public long Id { get; set; }
public string Tel1 { get; set; }
public string Tel2 { get; set; }
}
描述中确实描述了如何编写javascript代码来验证客户端,但如果您只想使用服务器端验证,则这是可选的。没有用于验证的烘焙属性,但很容易编写自己的验证属性。我不知道你说的没有客户端代码是什么意思,但是如果没有客户端代码,就不可能进行这种客户端验证。我不确定HTML5验证是否支持这种验证 以下是一篇示例自定义验证创建分步博客文章:
没有烘焙验证属性,但很容易编写自己的属性。我不知道你说的没有客户端代码是什么意思,但是如果没有客户端代码,就不可能进行这种客户端验证。我不确定HTML5验证是否支持这种验证 以下是一篇示例自定义验证创建分步博客文章:
只需更改模型并使用如下自定义验证器:
public class PhoneNumber : IValidatableObject {
public long Id { get; set; }
public string Tel1 { get; set; }
public string Tel2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var field1 = new[] { "Tel1" };
var field2 = new[] { "Tel2" };
if (string.IsNullOrEmpty(Tel1))
if (String.IsNullOrEmpty(Tel2))
yield return new ValidationResult("At least Fill one of Tel1 or Tel2", field1);
if (string.IsNullOrEmpty(Tel2))
if (String.IsNullOrEmpty(Tel1))
yield return new ValidationResult("At least Fill one of Tel1 or Tel2", field2);
}
}
只需更改模型并使用如下自定义验证器:
public class PhoneNumber : IValidatableObject {
public long Id { get; set; }
public string Tel1 { get; set; }
public string Tel2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var field1 = new[] { "Tel1" };
var field2 = new[] { "Tel2" };
if (string.IsNullOrEmpty(Tel1))
if (String.IsNullOrEmpty(Tel2))
yield return new ValidationResult("At least Fill one of Tel1 or Tel2", field1);
if (string.IsNullOrEmpty(Tel2))
if (String.IsNullOrEmpty(Tel1))
yield return new ValidationResult("At least Fill one of Tel1 or Tel2", field2);
}
}
你为什么不强迫他们填写Tel1而不是2中的至少一个?为了达到同样的目标,逻辑更简单。@BenRobinson这不是你所看到的要求。当然,需要的是收集至少一个电话号码。你为什么不强迫他们填写Tel1而不是2中的至少一个?逻辑更简单为了达到同样的目标。@BenRobinson正如你所见,这并不是必须的。当然,必须至少收集一个电话号码