【发布时间】:2011-03-23 22:25:05
【问题描述】:
我们当前工作的 Web 门户是来自经典 ASP 代码库的端口。目前,我们项目中的所有页面都扩展了一个名为PortalPage 的自定义Page 类。它处理登录/注销,为当前经过身份验证的用户提供对公共 User 对象的访问,并将标准页眉和页脚添加到我们所有的页面。
我们网站中的每个页面都是 100% 在代码隐藏中设计的。根本不使用 ASPX 页面。每个 div、img 和文本块都被分配为一个对象并从 C# 函数中添加,即使它是完全静态的内容(我们有相当数量的内容)。
页眉示例:
HtmlGenericControl wrapperDiv = new HtmlGeneric("div");
HtmlAnchor bannerLink = new HtmlAnchor();
HtmlImage banner = new HtmlImage();
bannerLink.HRef = "index.aspx";
banner.Src = "mybanner.png";
banner.Alt = "My Site";
bannerLink.Controls.Add(banner);
wrapperDiv.Controls.Add(bannerLink);
this.Page.Controls.Add(wrapperDiv);
更糟糕的是,所有的 Javascript 都作为一大堆字符串连接添加到页面中:
ClientScript.RegisterClientScriptBlock(this.GetType(), "javascript", @"
<script language='javascript'>
fullUrl = '" + ConfigurationManager.AppSettings["fullUrl"].ToString() + @"';
function showModule()
{
$('#" + this.userModule.ClientID + @"').css('display','block');
$('#" + this.groupModule.ClientID + @"').css('display','none');
$('#" + this.listsModule.ClientID + @"').css('display','none');
$('#" + this.labelsModule.ClientID + @"').css('display','none');
}
目前,我的一位同事争辩说,分配代码隐藏中的每个对象比使用 ASPX w/ Codebehind 方法快数百倍,而我看到其他所有 Web 应用程序都在使用这种方法。这违背了我的直觉,因为它本质上是在页面上的每一段 HTML 中添加runat="server"。
他还说,所有专业商店都以这种方式编写代码,从不使用 ASPX 页面。他说所有教科书和示例代码都使用 ASPX 页面,因为它们更容易让新手编码人员理解。这是有道理的,还是我们只是为了传统而以一种令人难以置信的低效方式写作?
为了让我们切换到编写 Web 表单的“标准”方式,我需要提供一些来源来证明他的错误。
我的问题是,我从未听说过其他人在代码隐藏中编写所有内容。我见过的每个示例都将 ASPX 页面用于用户界面,并使用代码隐藏用于逻辑、数据库调用等。
总之:
1) ASPX 页面真的比 100% 代码隐藏慢得多吗?
2) 专业商店真的使用 100% 代码隐藏吗?
3) 如果 ASPX w/codebehind 是要走的路,有没有人有任何可靠的链接可以帮助我支持?
【问题讨论】:
-
听起来像是在为他的方式做事找借口。我从未见过任何 100% 代码隐藏的地方。
-
错误地引用 Charles Babbage 的话,“我无法正确理解可能引发这种 Web 开发方法的想法的混乱。”
-
用技术术语来说——你的同事被打了。这一定是我听说过的最低效、最晦涩难懂的编码方式。您失去了在页面运行时调整页面布局的所有能力(考虑到您的方法,您甚至可能不知道),这一切都是为了什么?这样你就可以吹嘘自己写出了最深奥的代码?
-
@Carson63000 很有趣,我昨天才第一次读到这句话here
标签: c# asp.net webforms code-behind