Asp.net mvc 2 if语句在视图中显示html.actionlink
我有一个显示评论列表的视图。现在,一条评论可以有一个与之关联的文档,因此当我显示每个评论时,我需要检查“AttachedDocumentID”是否有值,如果有,则显示指向它的HTML.ActionLink 我不确定这样做的最佳方式是什么,以避免视图中出现if语句(我认为这是一种糟糕的形式),我也不想在助手中生成任何html代码Asp.net mvc 2 if语句在视图中显示html.actionlink,asp.net-mvc-2,view,html-helper,Asp.net Mvc 2,View,Html Helper,我有一个显示评论列表的视图。现在,一条评论可以有一个与之关联的文档,因此当我显示每个评论时,我需要检查“AttachedDocumentID”是否有值,如果有,则显示指向它的HTML.ActionLink 我不确定这样做的最佳方式是什么,以避免视图中出现if语句(我认为这是一种糟糕的形式),我也不想在助手中生成任何html代码 我还有什么其他选择?我个人会在视图中作为if语句来执行,因为很清楚您的意图,但是如果需要,您可以添加一个扩展方法: public static MvcHtmlString
我还有什么其他选择?我个人会在视图中作为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) %>
dave是对的-视图中的if语句没有任何问题。循环也可以。要避免的事情是让视图执行任何类型的查询、计算或模型修改。如果视图有单独的模型(ViewModel),请将这种逻辑移到那里。这样,属于视图的逻辑就停留在一个地方。我更喜欢仅在视图间的通用可重用案例中使用HtmlHelpers。这正是我所想的,我已经为自己创建了一个帮助器,在其中我可以传递一个表达式,如果计算为true,则传递的操作将被执行,否则返回一个空字符串。