2011-06-30 73 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