C# 中额外的 If 语句或重复代码

问题描述 投票:0回答:6
c# asp.net-mvc asp.net-mvc-2
6个回答
12
投票

第三个选项;条件链接的扩展方法。

public static string ConditionalHyperlink(this HtmlHelper helper, string url, string text, bool shouldLink){
 ...
}

这使您的视图更具可读性。

<%= Html.ConditionalHyperlink("/MVC/AzureMail/Unfiled/" + item.Name, item.Name, item.isMgmt) %>

2
投票

第一个选项。与选项 2 中的拆分相比,拥有在语句中创建链接的所有相关逻辑似乎更符合逻辑。

编辑:我认为大多数人都同意选项 1 更好。我是 HtmlHelpers(=更干净的视图)的支持者,所以我的额外建议是创建一个帮助器来包装您呈现的逻辑。


1
投票

我认为第一个最有意义,但我不确定这里是否真的有正确或错误的答案。仅从清晰的角度来看,第二个似乎不太可读。


1
投票

在我看来,第一个示例最有意义,因为它将 href 和结束标记保留在同一逻辑处理语句位置内。第二个示例非常重复,如果代码按照 #2 构建并分隔两个相同的条件,则可能会导致错误。

无论如何,只是我的想法


0
投票
<%foreach (var item in Model.items)
{
%>
<tr>
    <td>
        <%: item.isMgmt ? item.uName : string.format("<a href=\"/MVC/AzureMail/Unfiled/{0}\"">{0}</a>, item.uName) %>
    </td>
</tr>
<% } %>

我仍然建议使用 html 助手


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.