ASP.NET MVC数据注释属性从另一个属性值设置的范围

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属性最小值.

Kor*_*yem 9

最近有一个令人惊奇的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)


Rap*_*aus 2

没有可以处理属性之间依赖关系的内置属性。

因此,如果您想使用属性,则必须编写一个自定义属性。

请参阅此处查看您需要的示例。

您还可以查看dataannotationsextensions.org

另一个解决方案是使用验证库,例如(非常好的)FluentValidation