如何实现一个模型来强制客户端在ASP中填写至少两个输入中的一个.净MVC
本文关键字:一个 输入 MVC 两个 客户端 模型 实现 何实现 ASP | 更新日期: 2023-09-27 18:15:14
这是我的模型:
public class PhoneNumber {
public long Id { get; set; }
public string Tel1 { get; set; }
public string Tel2 { get; set; }
}
我怎么能强迫客户端在创建动作填写至少一个电话(Tel1或Tel2),我不想使用任何客户端脚本,或控制器代码,我只是有兴趣使用一些属性在上面的模型,如[Required]来实现这一目标?
就像这样更改模型并使用自定义验证器:
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);
}
}
这与下面的问题类似,这里建议您创建一个自定义属性。
你的模型可以写成:
[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验证是否支持这种验证)。
这里是一个示例,自定义验证创建一步一步的博客文章:
ASP。. NET MVC:小于和大于验证属性