如何在 Repeater 中调用 Class 文件中的函数而不继承

How to call functions in a Class file, when inside a Repeater, without inheritance

我正在使用中继器创建一个 HTML table,其值来自数据库。这部分工作完美:
TEST.ASPX : <td><%# FancyFormat(Eval("MyColumnName"))%></td>

我使用的函数在我的代码隐藏中定义:
TEST.ASPX.VB : Function FancyFormat(ByVal Whatever As String) As String
它只是一个日期格式化函数,一段非常通用的代码。

所以我决定在同一项目的 Class 文件中创建一个更好的函数,因为我想在其他二十个网页上使用该函数:
HELPFUL.VB : Public Shared Function BeautifulFormat(ByVal Whatever As String) As String

幸好我输入了以下内容:
TEST.ASPX : <td><%# Helpful.BeautifulFormat(Eval("MyColumnName"))%></td>
遗憾的是,我收到错误消息“Helpful is not declared. 由于其保护级别,它可能无法访问”。

我读过类似的问题asp.net In a repeater is it possible to call a public function from another class?,但那些解决方案讨论的是继承。滥用继承来处理日期格式之类的事情似乎是不合适的。这样的功能非常'global',你会想在项目的许多不同地方使用它,而不仅仅是在网页上。如果您在 Web 服务中或 GLOBAL.ASAX.VB 中需要它怎么办?

所以我的问题是:您能否在不使用继承的情况下以我想要的方式提供函数?还是我必须接受 Public Class Helpful Inherits System.Web.UI.Page 并更改我的代码隐藏文件以在其中包含 Inherits Helpful

您需要创建函数 Public 和共享

Public Shared Function BeautifulFormat(ByVal Whatever As String) As String

End Function

那你需要在项目名称前面加上吗?

<td><%# [ProjectName].Helpful.BeautifulFormat(Eval("MyColumnName"))%></td>

或添加命名空间引用?

或者只放入一个模块,随处可用。