2011-06-30 112 views
0

我真的不知道如何以簡單的方式提出這個問題。<%= PerformSomeFunction()%>這是怎麼回事?

我需要在一個頁面上的幾個地方顯示一個客戶端名稱,並且它們並不總是可見的。

我原來的解決方案是3個標籤控件(uxClientName1,uxClientName2和uxClientName3),我會在需要時將它們填充到我的代碼中。

uxClientName1 = CurrentClient.ClientName 

一位同事建議我使用以下解決方案。在我的網頁我想有這樣的地方,我需要它...

<%=DisplayClientName()%> 

,並在我的代碼後面我會這樣...

Protected Function DisplayClientName() As String 

    Return CurrentClient.ClientName 

End Function 

這是偉大的,因爲它做的正是我想要的沒有重複的代碼,但我真的不知道它是如何工作的,或者確切發生了什麼。

任何解釋?

編輯:這是在頁面上我的客戶屬性...

Private Property CurrentClient() As Client 
    Get 
     If ViewState("CurrentClient") Is Nothing Then 
      ' No such value in view state, take appropriate action. 
      ViewState("CurrentClient") = New Client 
      Return CType(ViewState("CurrentClient"), Client) 
     Else 
      Return CType(ViewState("CurrentClient"), Client) 
     End If 
    End Get 
    Set(ByVal value As Client) 
     ViewState("CurrentClient") = value 
    End Set 
End Property 
+0

經典的ASP,多數民衆贊成在所有的工作方式 – Jodrell

回答

0

這些是embedded code blocks

嵌入式代碼塊必須以頁面的默認語言寫入 。對於 例如,如果網頁的@頁 指令包含的屬性 語言=「VB」,頁面將使用 Visual Basic編譯器在標有 RUNAT =「服務器」和任何在 - 任何腳本塊編譯代碼 行代碼在 <%>分隔符。

嵌入代碼塊在 支持ASP.NET網頁主要到 保持與舊的ASP技術向後兼容 。一般來說, 採用嵌入式代碼塊,對於複雜的 編程邏輯並不是最佳的 的做法,因爲當代碼是 與帶有標記的頁面混合在一起時,就可能難以調試和維護。在 此外,因爲代碼只在頁面的呈現階段執行 , 你必須在劃定範圍代碼 頁 處理的適當階段比代碼隱藏或 腳本塊碼少得多 靈活性。

嵌入式代碼塊的一些用途:

  • 設置一個控制或標記元素到由函數
  • 返回直接嵌入一個計算到標記或控制屬性的值的值。

這是list of all inline ASP.NET tags

+0

好的謝謝。那麼什麼是適合這種功能的替代品。將3個標籤放在不同的地方並不是完全正確。 – Westicle

+0

如果你做得很好,使用它。通常使用嵌入式代碼塊並不壞,但通常情況下可能會有更好的方法。什麼是「CurrentClient」? –

+0

CurrentClient是我創建的客戶端類的一個實例。 – Westicle

0

當頁面被送達,ASP.NET會嘗試調用這個函數,然後將它寫它的返回值的響應流。

這隻會發生一次

<%= func() %> 

方式調用服務器端func()當你評估頁面

0

<%=DisplayClientName()%>是簡寫<%Response.Write(DisplayClientName())%>。它只是從答案中寫出返回值。

0

<%%>之間的代碼在服務器端執行。 =符號表示方法的結果將被輸出到頁面。因此,您網頁中的基本<%=DisplayClientName()%>將被替換爲返回值DisplayClient