+1  A: 

1) You can't access the outer class via a property level ValidationAttribute.

You could use a custom model binder to accomplish this. Simply detect the attributes and validate accordingly.

Creating a custom model binder: http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx

2) No. Did you try?

This is almost a duplicate. I'd check out the question and answers for my dupe submission. It may contain a separate technique, class level validation, that may do what you need.

jfar
You're right - I'm looking for a way to do class-level validation. I just relooked at the dupe you identified and I found your answer to that question. http://byatool.com/mvc/custom-data-annotations-with-mvc-how-to-check-multiple-properties-at-one-time/ is exactly what I want to do. That solves my first question, but I still don't know how to write to a property and whether this affects other client-side validation.
Maxim Zaslavsky
I have updated my question to clarify what I still don't understand after reading your answer. I think that should resolve the dupe issue, as the question you linked to isn't asking about writing to a property inside the class.
Maxim Zaslavsky
@Maxim Z, your code looks good and no it won't break client side validation. What don't you understand?
jfar