收录日期:2021/01/23 19:37:42 时间:2010-03-31 04:35:06 标签:asp.net-mvc,validation,data-annotations,unique-key

I am in the way building some MVC Application and I really love the Data Annotations support in MVC. The build in support is good enough to enforce simple validation checkup. I wonder, how to implement unique-field validation using custom data-annotation ? For example, I have a view model that need the user to register a new login name, is there way to check (using Model.IsValid) whether the name is not existed before calling the db submit?

You could write your own validator attribute to check the database I guess or you could load all the data in and checkagainst that.

I'd be more inclined to simply attempt to write to the database and have the unique constraint in the table. If you get back an error indicating that there is a duplicate insert error then you simply show that to the user.

I wouldn't be looking to read ahead and check myself.

EDIT

I guess you could also do the check in the code that does the insert. You could do a read and if none is found then insert.

If you do find a duplicate, you could add to the models validation violation rules and return it so that the error would appear in the validation summary on the page.

Create your own Attribute which inherits from ValidationAttribute(the base for all the validation attributes in the DataAnnotations namespace). Override the IsValid method with a check for user id uniqueness.