You can handle the validation in the model as model-level validation by specifying the IValidatableObject interface, and defining the required Validate() method, like this:
public class Address : IValidatableObject
{
public int PriceTo { get; set; }
public int PriceFrom { get; set; }
public int CurrencyUnit { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();
if(PriceFrom != null && PriceTo != null)
{
if( ! PriceTo > PriceFrom )
{
results.Add (new ValidationResult("\"Price To\" must be greater than \"Price From\"", new List<string> { "PriceTo", "PriceFrom" }));
}
}
if(PriceFrom != null || PriceTo != null)
{
if(CurrencyUnit == null)
{
results.Add (new ValidationResult("If you indicate any prices, you must specify a currency unit"", new List<string> { "CurrencyUnit" }))
}
}
return results;
}
}
NOTE, however: I don't think your MVC client-side validation picks up this rule, so it will only apply server-side.