我們目前的工作門戶網站是來自傳統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應用程序都使用這種方法。這違背了我的直覺,因爲它實質上是將runat="server"
添加到頁面上的每一段HTML。
他還說所有的專業商店都是這樣編寫代碼的,並且從不使用ASPX頁面。他說所有的教科書和示例代碼都使用ASPX頁面,因爲它們讓新手編程人員更容易理解。這是真的嗎,還是我們爲了傳統而以一種非常低效的方式寫作?
爲了讓我們切換到編寫Web窗體的「標準」方式,我需要提供一些信息來表明他錯了。
我的問題是,我從來沒有聽說過任何人在代碼隱藏中編寫的所有內容。我見過的每個示例使用的用戶界面和邏輯,數據庫調用代碼隱藏ASPX頁面等
因此,在總結:
1)ASPX頁面真的遠遠低於100%的代碼隱藏?
2)專業商店是否實際使用100%隱藏代碼?
3)如果ASPX w/codebehind是要走的路,有沒有人有任何可信的鏈接可以幫助支持我?
聽起來像一個人尋找藉口來做事_his_方式。我有**從未**見過任何100%隱藏代碼的地方。 – Oded 2010-08-01 18:52:27
爲了引用Charles Babbage的話,「我不能正確地理解那些可能會引發這種Web開發方法的思想混亂。」 – Carson63000 2010-08-02 01:05:42
用專業術語說 - 你的同事被打砸了。這應該是我聽說過的最低效率,頭髮模糊的編碼方式。你失去了在頁面運行時調整頁面佈局的全部能力(你甚至可能不知道給定了你的方法),而所有這些都是爲了什麼?那麼你可以吹噓寫出最深奧的代碼嗎? – 2011-09-19 16:42:01