2010-12-23 71 views
0

我有一个显示注释列表的视图。现在评论可以有一个关联的文档,因为我显示每个评论我需要检查“AttachedDocumentID”是否有值,如果是的话显示一个HTML.ActionLink它。if语句在视图中显示html.actionlink

不确定最好的办法做到这一点,以避免在视图中有一个if语句(我导致认为这是糟糕的形式),我真的不想在助手中生成任何html代码。

我还有其他选择吗?

回答

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) %> 
+0

这几乎是我在想什么,我创建了自己的帮手,我可以传入一个表达式,如果计算结果为true,那么传入的操作将执行,否则返回一个空字符串。 – Gazeth 2010-12-27 10:48:35

0

dave是对的 - if语句在视图中没有错。循环也可以。要避免的事情是让视图做任何类型的查询或计算或模型修改。

0

如果您有一个单独的视图模型(ViewModel),请将此类逻辑移到那里。这种方式的逻辑属于视图停留在一个地方。我更喜欢将HtmlHelpers仅用于跨视图的通用可重用情况。