<%= PerformSomeFunction()%>这里发生了什么?

时间:2011-06-30 14:19:04

标签: asp.net vb.net

我真的不知道如何以简单的方式提出这个问题。

我需要在几个地方的页面上显示客户名称,并且它们并不总是同时可见。

我最初的解决方案是3个Label Controls(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

4 个答案:

答案 0 :(得分:0)

当提供页面时,ASP.NET将尝试调用该函数,然后将它的返回值写入响应流。

这只会发生一次

<%= func() %>

表示在评估页面时在服务器端调用func()

答案 1 :(得分:0)

<%=DisplayClientName()%><%Response.Write(DisplayClientName())%>的简写。它只是将答案中的返回值写入响应。

答案 2 :(得分:0)

<%%>之间的代码在服务器端执行。 =符号表示方法的结果将输出到页面。因此,您网页中的<%=DisplayClientName()%>基本上将替换为DisplayClient的返回值。

答案 3 :(得分:0)

这些是embedded code blocks

  

必须编写嵌入式代码块   在页面的默认语言中。对于   例如,如果页面是@Page   指令包含属性   language =“VB”,页面将使用   Visual Basic编译器编译代码   在标有的任何脚本块中   runat =“server”和任何内联代码   &lt; %%&gt;分隔符。

     

支持嵌入式代码块   ASP.NET网页主要以   保持向后兼容性   较旧的ASP技术。一般来说,   使用嵌入式代码块来实现复杂   编程逻辑不是最好的   练习,因为当代码是   在页面上混合了标记,它可以   难以调试和维护。在   另外,因为代码被执行了   仅在页面的渲染阶段,   你少得多   灵活性比代码隐藏或   用于确定代码范围的脚本块代码   到适当的页面阶段   处理

嵌入式代码块的一些用途:

  • 将控件或标记元素的值设置为函数返回的值
  • 将计算直接嵌入到标记或控件属性中。

这是list of all inline ASP.NET tags