我真的不知道如何以简单的方式提出这个问题。
我需要在几个地方的页面上显示客户名称,并且它们并不总是同时可见。
我最初的解决方案是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
答案 0 :(得分:0)
当提供页面时,ASP.NET将尝试调用该函数,然后将它的返回值写入响应流。
这只会发生一次
<%= func() %>
表示在评估页面时在服务器端调用func()
答案 1 :(得分:0)
<%=DisplayClientName()%>
是<%Response.Write(DisplayClientName())%>
的简写。它只是将答案中的返回值写入响应。
答案 2 :(得分:0)
<%
和%>
之间的代码在服务器端执行。 =
符号表示方法的结果将输出到页面。因此,您网页中的<%=DisplayClientName()%>
基本上将替换为DisplayClient
的返回值。
答案 3 :(得分:0)
必须编写嵌入式代码块 在页面的默认语言中。对于 例如,如果页面是@Page 指令包含属性 language =“VB”,页面将使用 Visual Basic编译器编译代码 在标有的任何脚本块中 runat =“server”和任何内联代码 &lt; %%&gt;分隔符。
支持嵌入式代码块 ASP.NET网页主要以 保持向后兼容性 较旧的ASP技术。一般来说, 使用嵌入式代码块来实现复杂 编程逻辑不是最好的 练习,因为当代码是 在页面上混合了标记,它可以 难以调试和维护。在 另外,因为代码被执行了 仅在页面的渲染阶段, 你少得多 灵活性比代码隐藏或 用于确定代码范围的脚本块代码 到适当的页面阶段 处理
嵌入式代码块的一些用途: