第三个选项;条件链接的扩展方法。
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 中的拆分相比,拥有在语句中创建链接的所有相关逻辑似乎更符合逻辑。
编辑:我认为大多数人都同意选项 1 更好。我是 HtmlHelpers(=更干净的视图)的支持者,所以我的额外建议是创建一个帮助器来包装您呈现的逻辑。
我认为第一个最有意义,但我不确定这里是否真的有正确或错误的答案。仅从清晰的角度来看,第二个似乎不太可读。
在我看来,第一个示例最有意义,因为它将 href 和结束标记保留在同一逻辑处理语句位置内。第二个示例非常重复,如果代码按照 #2 构建并分隔两个相同的条件,则可能会导致错误。
无论如何,只是我的想法
<%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 助手