Skip to main content

The Easy Way To Create Custom Validation In .NET Core MVC

I'm finding a lot of tutorials out there with tons to slog through, but for basic validations it doesn't have to be that complicated.  Somewhere in your model (if you want), define a class for the attribute you'd like.  The class will inherit from ValidationAttribute.  It will have a method, public override bool IsValid, that takes an object as its argument.  The object is what the field gives you.  You can then define some logic in the method to get from that object to a truth value.  

Below is a working attribute I cooked up to test whether an entry in a field (conceived as a decimal) is not zero.  Note that the object has to be converted to decimal form before it can be tested (and an explicit cast doesn't seem like the way to go here).
public class NotZero:ValidationAttribute
{
        public override bool IsValid(object value)
        {
            var d = Convert.ToDecimal(value);
            return d != 0;
        }
}
So that's my bit.  Don't read the long tutorials unless you need something fancy or have a pretty good understanding of how the validation stuff works.  First try to copy and modify this.  I can't guarantee it will work in every case, but it's a decent way to extend the basic annotations on the fly.

Comments

Popular posts from this blog

Getting Geodata From Google's API

The apps I'm going to be analyzing are part of Dr. Charles Severance's MOOC on Python and Databases and work together according to the following structure (which applies both in this specific case and more generally to any application that creates and interprets a database using online data). The data source, in this case, is Google's Google Maps Geocoding API.  The "package" has two components: geoload.py  and geodump.py .  geoload.py  reads a list of locations from a file -- addresses for which we would like geographical information -- requests information about them from Google, and stores the information on a database ( geodata.db ).  geodump.py  reads and parses data from the database in JSON, then loads that into a javascript file.  The javascript is then used to create a web page on which the data is visualized as a series of points on the world-map.  Dr. Severance's course focuses on Python, so I'm only going to work my way through ...

Shell Sort

Today I spent a little bit of time researching the "Shell" sort.  I wanted to post a few notes about the Princeton Algorithms Course's implementation to help me solidify my understanding. First, a little tidbit.  When I first heard about this algorithm, I thought it had something to do with shell games.  Turns out a man named Donald Shell discovered this method of sorting, whence the name. The Algorithms  book gives the following explanation (Sedgewick and Wayne,  Algorithms, 4th ed., p. 258): The idea is to rearrange the array to give it the property that taking every hth entry (starting anywhere) yields a sorted subsequence. Such an array is said to be h-sorted. Put another way, an h-sorted array is h independent sorted subsequences, interleaved together. By h-sorting for some large values of h, we can move items in the array long distances and thus make it easier to h-sort for smaller values of h. Using such a procedure for any sequence of values o...

Cash Register Algorithm

Goal: Given a price, cash tendered, and two dimensional array of change ordered by denomination (pennies, dimes, quarters, etc.), return an array of exact change. Exceptions: return "insufficient funds" if there isn't exact change; return "closed" if exact change is equivalent to the contents of the array; return a warning if the price is greater than the cash tendered. Analysis First, check the difference between the price and cash tendered. If the price is greater than cash tendered, return an error. If the price equals the cash tendered, no change is needed. From this point, we assume the price is less than the cash tendered. It helps to consider a simpler case where the cash tendered and the change on hand is all pennies and dimes.  You could proceed like this: (1) see if all of the change can be given in pennies.  If it can't (2) see if the remainder can be made up with dimes.  We could get the following cases: A. All your pennies and som...