Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 if语句在视图中显示html.actionlink_Asp.net Mvc 2_View_Html Helper - Fatal编程技术网

Asp.net mvc 2 if语句在视图中显示html.actionlink

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

我有一个显示评论列表的视图。现在,一条评论可以有一个与之关联的文档,因此当我显示每个评论时,我需要检查“AttachedDocumentID”是否有值,如果有,则显示指向它的HTML.ActionLink

我不确定这样做的最佳方式是什么,以避免视图中出现if语句(我认为这是一种糟糕的形式),我也不想在助手中生成任何html代码


我还有什么其他选择?

我个人会在视图中作为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,则传递的操作将被执行,否则返回一个空字符串。