Asp.net 这里发生了什么?
我真的不知道如何简单地问这个问题 我需要在页面上的多个位置显示客户端名称,但它们并不总是同时可见 我最初的解决方案是3个标签控件uxClientName1、uxClientName2和uxClientName3,当我需要它们时,我会在我的代码中填充它们Asp.net 这里发生了什么?,asp.net,vb.net,Asp.net,Vb.net,我真的不知道如何简单地问这个问题 我需要在页面上的多个位置显示客户端名称,但它们并不总是同时可见 我最初的解决方案是3个标签控件uxClientName1、uxClientName2和uxClientName3,当我需要它们时,我会在我的代码中填充它们 uxClientName1 = CurrentClient.ClientName 一位同事建议我使用以下解决方案。在我的页面上,无论我在哪里需要它,我都会有它 <%=DisplayClientName()%> 这很好,因为它做的正
uxClientName1 = CurrentClient.ClientName
一位同事建议我使用以下解决方案。在我的页面上,无论我在哪里需要它,我都会有它
<%=DisplayClientName()%>
这很好,因为它做的正是我想要的,没有重复的代码,但我真的不知道它是如何工作的,或者到底发生了什么
有什么解释吗
编辑:这是我在页面上的客户端属性
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
当提供页面时,ASP.NET将尝试调用该函数,然后将其返回值写入响应流 这只会发生一次
<%= func() %>
表示在计算页面时在服务器端调用func。它只是将应答的返回值写入响应。之间的代码在服务器端执行。=符号表示方法的结果将输出到页面。因此,页面中的内容基本上将替换为DisplayClient的返回值。这些是
必须编写嵌入式代码块
使用页面的默认语言。对于
例如,如果页面的@page
指令包含该属性
language=VB,页面将使用
Visual Basic编译器编译代码
在标记为的任何脚本块中
runat=server和中的任何内嵌代码
分隔符
中支持嵌入式代码块
ASP.NET网页主要用于
保持与的向后兼容性
旧的ASP技术。一般来说
使用嵌入式代码块实现复杂的
编程逻辑不是最好的方法
练习,因为当代码
在带有标记的页面上混合,它可以
很难调试和维护。在里面
另外,因为代码是执行的
仅在页面的呈现阶段,
你的收入大大减少了
比代码隐藏或
在限定代码范围时为块代码编写脚本
到页面的适当阶段
处理
嵌入式代码块的一些用途:
将控件或标记元素的值设置为函数返回的值
将计算直接嵌入到标记或控件属性中。
这是一个。经典的ASP,这就是它过去的工作方式。谢谢。那么,什么才是这种功能的合适替代品呢。使用3个标签并在不同的地方填充它们似乎不太合适。如果您使用它做得很好,请使用它。一般来说,使用嵌入式代码块并不坏,但通常可能有更好的方法。什么是CurrentClient?CurrentClient是我创建的一个客户端类的实例。@Westicle:什么是客户端类,在哪里/如何初始化?如果我们有更多的背景信息,我们可能会建议一个替代方案。@Tim客户机类是我创建的一个简单类,用于表示为我的业务工作的客户机。在页面加载时,我从查询字符串中获取客户机ID,创建客户机类的实例,并通过页面属性将其存储在viewstate中。我在上面的问题中加了这个。
<%= func() %>