Подход, который вы можете использовать, будет сильно различаться в зависимости от конкретного сценария. Несколько вариантов включают:
- Выполнение, как вы говорите, и добавление условного выражения в представление
- Абстрагирование условного (если оно сложного) в вашу модель представления, так что линии в представлении все еще просты (просто получая доступ к предустановленному логическому значению в вашей модели представления).
- Выполнение этого условия на уровне маршрута или контроллера и вызов другого общего вида (который может иметь общий вид (бритва) или общий вид (веб-формы mvc))
Вы не упоминаете явно, как бы вы отображали элементы управления в условном выражении. Я предполагаю, что вы будете делать RenderPartial. Таким образом, сами линии в представлении будут довольно «маленькими».
if(myViewModel.ComplexBoolean) // Boolean set in generation of view model
Html.RenderPartial('firstPartial')
else
Html.RenderPartial('secondPartial')
РЕДАКТИРОВАТЬ : Если элемент, который вы устанавливаете как «видимый», является просто одним элементом управления, вы можете просто вывести элемент управления напрямую, например,
if(myViewModel.ComplexBoolean) {
Html.DropDownListFor(m => m.Type, Model.Types /* An IEnumerable<SelectListItem>*/, new { @class = "myList" });
}
Кроме того, если вы не хотите устанавливать это свойство Model.Types (например, чтобы сохранить попадание в БД), тогда условным условием может быть местоположение, в котором вы создаете модель представления (либо контроллер, либо какой-либо сервис / представление). модель репо). Вместо этого представление может просто проверить наличие свойств:
if(Model.Types != null) {
Html.DropDownListFor(m => m.Type, Model.Types /* An IEnumerable<SelectListItem>*/, new { @class = "myList" });
}