2012-03-25 176 views
1

是什麼在做這個的區別:差異beetwen分配屬性元素或將其直接標記

<a id="hlUser" runat="server"></a> 

在代碼隱藏:

<a href="<%=this.GetUserProfilePermalink()%>"><%=this.GetUsername()%></a> 

hlUser.HRef = GetUserProfilePermalink(); 

hlUser.InnerText = GetUsername(); 

我注意到我的代碼隱藏更具可讀性,因爲我把所有的標記都移到了標記上,但是如果我錯過某處的某個地方由於「字面上的字符太多」錯誤,很難找到錯誤。有什麼區別,做這件事的最佳方式是什麼?

回答

0

第二種方法是在服務器上創建超鏈接對象,在其上設置一些屬性,然後當頁面處於呈現狀態時,它將使用該對象來呈現HTML中的超鏈接。

第一種方法是使用Response對象發送字符串,服務器上沒有創建超鏈接對象。

即使第一種方法通常更輕量化,第二種方法有很多優點。例如,由於您在服務器上有一個呈現自身的對象,因此它可以知道當前將哪個瀏覽器呈現給自己,併爲不同的瀏覽器使用不同的呈現技術,因此它可以在任何地方使用。

+0

謝謝你的迴應,你能解釋一下「......併爲不同的瀏覽器使用不同的渲染技術,所以無處不在。」我不太明白你的意思。 – formatc 2012-03-25 16:56:07

1

一個區別是在ViewState用法:

假設你.GetUserProfilePermalink()是一個代價高昂的操作,與第一種方法,你必須在每次回發運行。

使用第二種方法和活動視圖狀態,您將只能運行.GetUserProfilePermalink()一次,並且該值將存儲在視圖狀態(以帶寬爲單位),並顯示在每個回發中。

另外,在項目編譯期間不會檢查標記中的代碼。從長遠來看,這是代碼重構的一個問題。