【发布时间】:2012-02-10 12:58:09
【问题描述】:
我正在开发一个计算机支持事件管理系统。
目前,事件的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 以受控方式显示它?
【问题讨论】:
-
您可以检查该表单是否可以在您的助手中呈现。只需发送一个枚举值并检查该视图是否可以呈现您的部分视图
-
在我的局部视图中必须有一些东西让它知道如何呈现一个列表
。问题是什么?从我的想象中应该很简单。
标签: asp.net-mvc-3 architecture razor