簡體   English   中英

ASP.NET NamingContainer命名約定

[英]ASP.NET NamingContainer naming convention

的背景

你好! 我正在做一個項目,在該項目中,客戶端需要在單個頁面上進行很多操作,這導致將相當大的HTML斑點呈現給客戶端瀏覽器。

主要問題是輸入標記(設置了runat =“ server”屬性),由於驗證,updatepanel觸發器,視圖狀態和控件標記本身,它們往往導致標記大小急劇增加。 我已經盡力減少了使用的觸發器數量,壓縮了視圖狀態(壓縮為原始視圖狀態大小的8%),並且擺脫了很多ASP.NET驗證程序並自己滾動,並且我一直在使用ClientIdMode來減少許多asp.net元素的ID屬性的長度。 所有這些結合起來大大減少了發送給客戶端的HTML數量(例如,請注意,請求的大小從2兆字節下降到500-600 kb-這是巨大的頁面)。

問題

我一直無法解決的一個問題就是輸入元素的自動生成的“名稱”屬性

<input name="ctl00$ctl00$ctl00$_main$_main$_bodyMatterPhase$_phaseTree$ctl00$_taskTree$ctl00$_taskDetails$_detailList$ctrl0$_row$_descriptionText" type="text" value="Investigation Week 1" maxlength="100" id="_taskTree_0__taskDetails_0__detailList_0__row_0__descriptionText_0" style="width:170px;">

如上所示,name屬性在297個字符中 139個,幾乎是該HUGE名稱所占用的標記標記的50%

是否有人對如何在ASP.NET中的某個地方掛上鈎子有任何想法,在這里我可以以某種方式轉換它們或以不同方式生成它們; 比如說代替ctl00 $ ctl00 $ ctl00 $ _main $ _main $ _bodyMatterPhase $ _phaseTree $ ctl00 $ _taskTree $ ctl00 $ _taskDetails $ _detailList $ ctrl0 $ _row $ _descriptionText,它可以是一個GUID,例如0x0AEED4B6445A11E08F873606E0D72085。

任何幫助將不勝感激!

在低於4.0的asp.net版本中是不可能的。
在4.0中,您具有ClientIDMOde屬性,可以將其設置為“靜態”值以獲取較短的名稱。
在此處查找更多信息: http : //msdn.microsoft.com/zh-cn/library/system.web.ui.control.clientid.aspx

好吧,給您兩個問題的答案。 您的項目以其原樣方式命名的原因是,實現了INamingContainer,其中每個容器在子控件的名稱之前添加了唯一標識符。 因此,您ID的結構和長度由HTML的結構控制。

現在,在.NET 4.0中,您可以控制自己,從而進一步控制此操作。 我建議看看這篇文章 ,以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM