我有一个显示评论列表的视图。现在注释可以有一个与之关联的文档,以便我显示每个注释,我需要检查是否" AttachedDocumentID"有一个值,如果有的话,显示一个HTML.ActionLink。
不确定以最佳方式执行此操作以避免在视图中使用if语句(我认为这是错误的形式)并且我并不真的想要生成任何html代码帮助者。
我还有其他选择吗?
答案 0 :(得分:1)
就个人而言,我会在视图中将其作为if语句,因为它清楚你想要什么,但如果你愿意,你可以添加一个扩展方法:
public static MvcHtmlString AttachedDocumentLink(this HtmlHelper helper, string text, string action, string controller, int? attachedDocumentId)
{
return attachedDocumentId == null ? MvcHtmlString.Empty : helper.ActionLink(text, action, controller, new { id = attachedDocumentId }, null);
}
然后在您的视图中将其称为正常
<%= Html.AttachedDocumentLink("Document", "AttachedDocument", "Posts", comment.AttachedDocumentId) %>
答案 1 :(得分:0)
戴夫是对的 - 视图中的if语句没有任何问题。循环也行。要避免的事情是让视图进行任何类型的查询或计算或模型修改。
答案 2 :(得分:0)
如果您有一个单独的视图模型(ViewModel),请在此处移动此类逻辑。那种逻辑属于视图停留在一个地方。我更喜欢将HtmlHelpers用于跨视图的通用可重用案例。