You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET网页中以内联表达式调用共享类中的函数?

问题:在ASP.NET网页内联表达式中调用外部类的函数

我想在ASP.NET网页的内联表达式里调用外部共享类中的函数。如果函数在页面的代码后置文件里,我能正常调用,但放在独立类里就无法直接调用。以下是我的代码和尝试过程:

共享类代码

Public Class Class1
    Public Function MyClassFunction() As String
        Return "Return results from MyClassFunction."
    End Function
End Class

期望实现的效果(已知无法运行,仅作演示)

我希望能直接在控件属性中通过内联表达式调用该类的函数,示例代码如下:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="default.aspx.vb" Inherits="_default" %>
<!doctype html>
<html lang="zh-CN">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <p>我希望在內聯表達式中使用來自外部類的函數:</p>
        <asp:Label ID="Label1" runat="server" Text="<%$ Class1.MyClassFunction() %>" />
    </form>
</body>
</html>

尝试方法1:代码后置声明实例 + 内联表达式

我在页面的代码后置文件中声明了Class1的实例,随后尝试使用嵌入式代码块、显示表达式、数据绑定表达式等多种内联表达式调用函数,但均无效。

代码后置声明:

Public Class _default
    Inherits System.Web.UI.Page
    Dim MySharedClass1 As New Class1
End Class

内联表达式尝试示例:

<asp:Label ID="Label1" runat="server" Text="<%= MySharedClass1.MyClassFunction() %>" />
<asp:FormView ...绑定数据源...>
    <asp:Label ID="Label1" runat="server" Text="<%# MySharedClass1.MyClassFunction() %>" />
</asp:FormView>

尝试方法2:使用Expression Builder

我参考旧示例实现了Expression Builder,当函数位于代码后置文件中时该方法有效,但调用外部类的函数仍然失败。

Expression Builder类代码:

Imports System.CodeDom
Imports System.Web.Compilation
<ExpressionPrefix("Code")> _
Public Class CodeExpressionBuilder
    Inherits ExpressionBuilder
    Public Overrides Function GetCodeExpression(entry As BoundPropertyEntry, parsedData As Object, context As ExpressionBuilderContext) As CodeExpression
        Return New CodeSnippetExpression(entry.Expression)
    End Function
End Class

Web.config配置:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5">
      <expressionBuilders>
        <add expressionPrefix="Code" type="CodeExpressionBuilder" />
      </expressionBuilders>
    </compilation>
  </system.web>
</configuration>

代码后置声明(与方法1一致):

Public Class _default
    Inherits System.Web.UI.Page
    Dim MySharedClass1 As New Class1
End Class

使用Expression Builder的内联表达式尝试:

<asp:Label ID="Label1" runat="server" Text="<%$ Code:MySharedClass1.MyClassFunction() %>" />

内容的提问来源于stack exchange,提问作者ptownbro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:25:15