Я работаю над компьютерной системой управления инцидентами.
В настоящее время представление Review
для инцидента содержит несколько кнопок управления инцидентами, которые «визуализируются» в представление с помощью следующей логики:
Модель для представления содержит несколько методов, которые могут определить, разрешено ли какое-либо действие в данный момент для этого инцидента
A part ViewModel to which the Review view is bound:
...
public bool CanContactUser()
{
return _manager.CanContactUser(Incident, User);
}
public bool CanComment()
{
return _manager.CanSetComment(Incident);
}
...
В представлении, в зависимости от результата этих методов, отображается кнопка фактического действия или нет:
...
@if (Model.CanContactUser())
{
@Html.MakePopupForm("ContactUser", new[] { "id" }, title: "Register user contact", refreshOnSuccess: true, okText: "Save", cancelText: "Cancel", resizable: false)
}
@if (Model.CanComment())
{
@Html.MakePopupForm("Comment", new[] { "id" }, title: "Comment", refreshOnSuccess: true, okText: "Save", cancelText: "Cancel", resizable: false)
}
...
Я чувствую, что это плохая практика. Даже при том, что это работает, я желаю иметь коллекцию доступных кнопок в памяти (в коде C #), я предполагаю в экземпляре класса ViewModel, и связываю представление, чтобы отобразить эту коллекцию.
Как этого достичь? В частности, связывание вида с набором кнопок. Я могу сгенерировать абстрактную коллекцию List<AvailableButton> buttonsToRenderAsHtml
... Но как мне связать Razor для ее отображения контролируемым образом?