2010-12-23 73 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僅用於跨視圖的通用可重用情況。