if语句在视图中显示html.actionlink

时间:2010-12-23 15:43:42

标签: asp.net-mvc-2 view html-helper

我有一个显示评论列表的视图。现在注释可以有一个与之关联的文档,以便我显示每个注释,我需要检查是否" AttachedDocumentID"有一个值,如果有的话,显示一个HTML.ActionLink。

不确定以最佳方式执行此操作以避免在视图中使用if语句(我认为这是错误的形式)并且我并不真的想要生成任何html代码帮助者。

我还有其他选择吗?

3 个答案:

答案 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用于跨视图的通用可重用案例。