代码之家  ›  专栏  ›  技术社区  ›  Beep beep

是回应。用ASP编写。NET视图是个坏主意吗?

  •  4
  • Beep beep  · 技术社区  · 16 年前

    我公司的大部分web编程背景都是PHP,所以ASP。NET MVC是我们最新web应用程序的合理选择,该应用程序还需要作为单独Winforms应用程序的后端。然而,我们不断发现自己走上了php中通常遵循的道路——为条件输出返回大量标签。这在ASP中是个坏主意吗。网络MVC?

    例如,没有响应。写:

          <%if (OurUserSession.IsMultiAccount)
            {%>
            <%=Html.ActionLink("SwitchAccount", "Accounts", "Login") %><span>|</span>
          <%}%>
    

          <%if (OurUserSession.IsMultiAccount)
              Response.Write (Html.ActionLink("Swith Account", "Accounts", "Login") + "<span>|</span>");
          %>
    

    这里的区别很小,但有时我们的视图逻辑会变得更加复杂(非常复杂的视图逻辑,即除了布尔值之外的任何东西,我们只需将其卸载给控制器)。第二个似乎更容易阅读,但我想看看大家对这件事有什么想法。

    4 回复  |  直到 16 年前
        1
  •  5
  •   Tomas Aschan    16 年前

    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>") %>
    

        2
  •  2
  •   Mehrdad Afshari    16 年前

    不。这主意不错。从功能上讲,这些片段是等效的。根据您的具体情况选择最易读的。

        3
  •  2
  •   annakata    16 年前

    <%=是 确切地 响应的简写。写-这两个语句不仅在功能上等价,而且完全相同。

    唯一的区别是可读性和简洁性;%=对于在ASP工作了一段时间的人来说,这很好。R.Write的重要之处在于,通常避免使用它编写字符串文字HTML,因为这很容易发生人为错误。

        4
  •  0
  •   percebus    12 年前

    这个问题可以从两个方面来解决:

    1. 演出

    回到ASP的经典时代,每次你关门 %> <% 有一些 脚本处理成本 (但处理能力同样有限)。考虑到这一点,如果我们谈论的是 foreach 我可能倾向于简单地使用的元素 Response.Write .

    2.可读性

    而不是其他意见,我个人认为 回应。写 大量 可读性。我认为新一代程序员不喜欢它,仅仅是因为它让他们想起了经典版本。

    然而,我确实非常喜欢 -托马斯·莱肯

    每次我编码 任何语言 我试试 不要偏离太远 Guido's Python's PEP-8 Styling guidelines ,但它有时会与.net的C#冲突。

    思考之后

    虽然这确实提出了一个问题:

    %> <%= ?