ASP.NET MVC data annotations attribute Range set from another property value

萝らか妹 提交于 2020-07-05 02:52:41

问题


Hi I have following in my Asp.net MVc Model

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; }

}

Now from my controller "OpeningAmount " is assign .

Finaly when I submit form I want to check that "amount" must be greater than "OpeningAmonut" . so want to set Range dynamically like

[Range(minimum = OpeningAmount , double.MaxValue, ErrorMessage = "The value must be greater than 0")]

I do not want to use only Jquery or javascript because it will check only client side so possible I can set Range attribute minimum dynamically than it would be great for.


回答1:


There's no built-in attribute which can work with dependence between properties.

So if you want to work with attributes, you'll have to write a custom one.

Se here for an example of what you need.

You can also take a look at dataannotationsextensions.org

Another solution would be to work with a validation library, like (the very nice) FluentValidation .




回答2:


Recently there's been an amazing nuget that does just that: dynamic annotations and it's called ExpressiveAnnotations

It allows you to do things that weren't possible before such as

[AssertThat("ReturnDate >= Today()")]
public DateTime? ReturnDate { get; set; }

or even

public bool GoAbroad { get; set; }
[RequiredIf("GoAbroad == true")]
public string PassportNumber { get; set; }


来源:https://stackoverflow.com/questions/21021684/asp-net-mvc-data-annotations-attribute-range-set-from-another-property-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!