Dil*_*165 8 c# asp.net-mvc data-annotations
嗨,我在我的Asp.net MVc模型中有以下内容
TestModel.cs
public class TestModel
{
public double OpeningAmount { get; set; }
[Required(ErrorMessage="Required")]
[Display(Name = "amount")]
[Range(0 , double.MaxValue, ErrorMessage = "The value must be greater than 0")]
public string amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在从我的控制器"OpeningAmount"分配.
最后,当我提交表格时,我想检查"金额"必须大于"OpeningAmonut".所以想要动态设置范围
[Range(minimum = OpeningAmount , double.MaxValue, ErrorMessage = "The value must be greater than 0")]
Run Code Online (Sandbox Code Playgroud)
我不想只使用Jquery或javascript,因为它只检查客户端,所以我可以动态地设置Range属性最小值.
最近有一个令人惊奇的nuget就是这样做的:动态注释,它叫做ExpressiveAnnotations
它允许你做以前无法做到的事情
[AssertThat("ReturnDate >= Today()")]
public DateTime? ReturnDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
甚至
public bool GoAbroad { get; set; }
[RequiredIf("GoAbroad == true")]
public string PassportNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)
没有可以处理属性之间依赖关系的内置属性。
因此,如果您想使用属性,则必须编写一个自定义属性。
请参阅此处查看您需要的示例。
您还可以查看dataannotationsextensions.org
另一个解决方案是使用验证库,例如(非常好的)FluentValidation。