You could solve this with a base and derived class:
public abstract class AddressDataViewModel
{
public virtual String Country {get; set;}
public String Town {get; set;}
}
public class PrimaryAddressDataViewModel : AddressDataViewModel
{
[Required]
public Overrides String Country {get; set;}
}
public class AdditionalAddressDataViewModel : AddressDataViewModel
{
}
public class AddressesDataViewModel
{
public PrimaryAddressDataViewModel PrimaryAddress {get;set;}
IEnumerable<AdditionalAddressDataViewModel> AdditionalAddresses {get;set;}
}