+1  A: 

I would venture to say you're having two problems.

  1. I'm assuming ReleaseDate is a DateTime. If that's the case, then doing movieToValidate.ReleaseDate.ToString() is going to return "1/1/1900 blahblah". You shouldn't check the length, you should check it like movieToValidate.ReleaseDate == DateTime.MinValue perhaps.
  2. I've gotten the "A value is required." error before when I didn't think I should be getting an error. It had something to do with my model not having something specified that it thought was required. Like, for instance, a FK relationship to another object wasn't being set or something. If you debug the app in your controller you should be able to see your ModelErrors and drill down to that specific error and see where it's coming from.
Joseph
OK so making the change you suggested in #1 added the Release Date error message, but I still have the generic error message there. I am going to check the debug like you suggested and post back.
Anders
@Anders -- sounds like the answer has been helpful so I'm surprised to not see an upvote for this answer.
tvanfosson
@tvan -- soz, running back and forth between code etc. i always upvote, just preoccupied atm :)
Anders
Going through the process (starts with clicking the create button), I see that the ModelState only has 3 keys. Where would you suggest looking for this nullable model property or whatnot?
Anders
I'm not sure where it is, and unfortunately I don't have an MVC build in front of me to check, but you can get to it from your controller actions when you debug into it. I think it's in your ModelState, but you might have to open up your keys and see what's inside them.
Joseph
+2  A: 

I suspect that the problem is that the error is being flagged when the model binder attempts to bind a null value to a model property that isn't nullable. You might want to clear the ModelState of any errors on that particular property, then add your own model validation error. If the ModelState contains multiple errors for the same property, you may only be getting the first matching one.

You could also make the ReleaseDate property nullable (DateTime?), then simply check that a date has been provided. This might be the simplest change, if possible, though if the model is derived from the database and the field is not nullable there you'd have to introduce a view model to accomplish it.

tvanfosson
From my experience that's why you get that error most of the time. Because it's trying to bind a null value to a non-nullable property. FKs are just one way that can happen.
Joseph