Официальная документация для проверки модели гласит:
Проверка модели происходит перед выполнением действия контроллера.
Поэтому вам необходимо очистить ModelState
и вручную запустить проверку, используя код, приведенный ниже.
if (!model.DifferentShippingAddress)
{
model.ShippingAddress = model.BillingAddress.ToShipping();
ModelState.Clear();
TryValidateModel(model);
}