在从经典ASP到Asp.Net的过渡中,一些开发人员将他们的服务器端代码放在HTML ala顶部的块中:
<%@ Import Namespace="MyDll" %>
<script runat="server">
void Page_Load()
{
}
</script>
这个单页模型有一些优势Jeff Atwood describes,但是,根据我的经验,我最近看到几乎所有代码都放在一个单独的代码隐藏文件中(即使用VS 2008)。
然而,事实证明,同事强烈倾向于使用单个文件(内联)方法而不是单独的代码隐藏方法。
每种方法的优点和缺点是什么? (我注意到代码崩溃,#regions似乎不受支持。页面也变得相当长,并且不再存在客户端和服务器端代码的视觉分离。你能告诉我有偏好吗?)< / p>
我意识到之前已经问过这个问题的变化,但我没有看到任何人具体说明每种方法的利弊。
修改
谢谢大家的发人深省的答案。我仍然希望列出每种方法的优点和缺点。每个人有(或没有)的实际功能是什么?
答案 0 :(得分:5)
毫无疑问,我认为代码隐藏或mvc模型对于你想要做的几乎所有事情都是优越的。然而,即使在今天,我仍然发现自己在大多数页面中使用内联代码。为什么?因为有一个很大的场景,内联脚本真正闪耀。
如果您有大量遗留的ASP Classic代码,您不想抛弃它,包括深层嵌套结构,它们都存在于一个大型应用程序中,并且您希望与您的asp共享该应用程序。网络代码,您可以直接在现有的Web文件系统中删除内联的asp.net页面,它们就可以正常工作。
这听起来就像你的其他开发者来自哪里。
答案 1 :(得分:4)
因为代码隐藏只是一个类,所以它具有所有优点,如inhertance和interfaces。它还增强了可读性。
对于专注于输出数据而非实现businesslogic的应用程序,单页主要被mvc取代。
答案 2 :(得分:2)
您是否考虑过查看ASP.NET MVC?它将使你能够在一个非常干净的分离中克服这种困境。
答案 3 :(得分:1)
通常,在WebForms中工作时,我看到的趋势是使用代码隐藏。我在现场看到的许多* WebForms应用程序在代码隐藏方面都有太多的东西,而且分离对于能够理解所有逻辑来说几乎是至关重要的。
然而,在设计良好的应用程序中,UI只执行UI工作,并将所有逻辑和繁重的工作传递到不同的应用程序层,单文件解决方案通常会变得更加优雅和容易遍历。在某种程度上,使用单文件解决方案可以 - 在正确的手中 - 激发更好的关注点分离,因为您不希望一个文件(提供您的UI)与一堆业务混乱逻辑。
在ASP.NET MVC模型中,默认为单文件。这又是强调关注点分离和良好的应用程序设计。 (如果ASP.NET MVC工具包提供了代码隐藏的概念,我不知道如何。如果有的话,我还没有使用它。)
最终,YMMV。无论是使用代码隐藏还是单文件模型,优秀的开发人员都倾向于编写好的代码。糟糕的开发人员也倾向于以任何方式编写错误的代码。
*
显然不是全部!
答案 4 :(得分:-1)
内联代码本质上是程序性的,缺乏关注点分离......
ASP.Net的一个卖点是代码隐藏和服务器控制。有人认为内联代码很糟糕。当ASP.NET Mvc出现在场景时,这种情况发生了变化 - 内联代码再次成为“时髦”。
如果我有一个选择,并且使用代码隐藏所有条件相同是更好的方法。我努力在UI之外保留尽可能多的逻辑/代码。
即使使用代码隐藏,虽然它是一个类,但它可能变得混乱。我发现使用MVP或MVC的某些变体与Web表单使得开发在长期内更易于维护。