У меня были похожие ситуации, которые я разрешал, используя частичные представления.У меня есть одна модель «верхнего уровня», скажем StudentModel, а затем у меня есть другие «внутренние» модели, такие как EnrolledStudentModel и т. Д. Затем у меня есть метод GenerateUI () для всех моделей, который создает разметку.
Модель верхнего уровня GenerateUI () просто делает что-то вроде:
public string GenerateUI()
{
if(Student.IsEnrolled)
return EnrolledStudentModel.GenerateUI();
else
return UnenrolledStudentModel.GenerateUI();
}
Затем, в свою очередь, UnenrolledStudentModel.GenerateUI () проверяет, открыта ли регистрация, и возвращает форму, в противном случае просто div, говорящий о закрытой регистрации,или подобный.
Это подход, который я бы выбрал.Надеюсь, это поможет