我公司的大部分网络编程背景都是PHP,因此ASP.NET MVC是我们最新的Web应用程序的合理选择,它也需要作为单独的Winforms应用程序的后端工作。然而,我们一直在寻找自己走在我们通常在php中遵循的道路 - 回应大量条件输出的标签。这是ASP.NET MVC中的一个坏主意吗?
例如,没有Response.Write:
<%if (OurUserSession.IsMultiAccount)
{%>
<%=Html.ActionLink("SwitchAccount", "Accounts", "Login") %><span>|</span>
<%}%>
使用Response.Write:
<%if (OurUserSession.IsMultiAccount)
Response.Write (Html.ActionLink("Swith Account", "Accounts", "Login") + "<span>|</span>");
%>
这里的差异相当小,但有时我们的视图逻辑变得更复杂(非常复杂的视图逻辑,即除了布尔值之外,我们只是卸载到控制器)。第二个似乎更容易阅读,但我想看看是否有任何关于此事的想法。
答案 0 :(得分:5)
正如Mehrdad所说,与Response.Write()
相比,没有使用<%= %>
的背面。但是,如果您希望使代码更具可读性,可以使用扩展方法:
public static string WriteIf(this HtmlHelper helper, bool condition, string tag) {
return condition ? tag : "";
}
将使用这样的:
<%= Html.WriteIf(UserSession.IsMultiAccount,
Html.ActionLink("Swith Account", "Accounts", "Login") + "<span>|</span>") %>
我觉得哪一个更容易阅读,这是一个品味问题。
答案 1 :(得分:2)
不。这不是一个坏主意。从功能上讲,这些片段是等效的。在特定情况下使用最具可读性。
答案 2 :(得分:2)
&lt;%=是完全的简写 - 这两个语句不仅在功能上等同,它们是相同的。
唯一的区别是可读性和简洁性,对于那些曾经使用ASP一段时间的人来说,&lt;%=是好的。一般来说R.Write的重要之处在于你避免使用它来编写字符串文字HTML,因为这很容易受到人为错误的影响。
答案 3 :(得分:0)
这个问题可以从两个方面来解决:
回到ASP经典时代,每次关闭%>
并重新打开<%
时,都会有一些脚本处理成本(但处理能力同样有限)。考虑到这一点,如果我们在讨论带有批次元素的foreach
循环,我可能会倾向于使用Response.Write
。
与其他意见相比,我个人认为Response.Write
很多可读。我认为新一代编码人员不喜欢它只是因为它让人想起经典版本。
但我确实非常喜欢 -Tomas Lycken-的回答。似乎是两个世界中最好的。
每次我使用任何语言进行编码 我尝试不要远离Guido's Python's PEP-8 Styling guidelines,但它有时与.net的C#的冲突
虽然确实提出了一个问题:
%> <%=
上调用自定义方法吗?