如何在Repeater内部调用Class文件中的函数,而不进行继承

时间:2017-06-23 13:01:09

标签: asp.net inheritance repeater

我使用转发器创建一个包含来自数据库的值的HTML表。这部分工作得很好:
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>
可悲的是,我收到了错误&#34; 有关未被宣布。由于其保护级别,它可能无法访问&#34;

我已经阅读了类似的问题asp.net In a repeater is it possible to call a public function from another class?,但这些解决方案谈论了继承。对日期格式化之类的东西滥用继承似乎是不合适的。这样的功能是非常全球性的。并且您希望在项目的许多不同位置使用它,而不仅仅是在网页上。如果您在Web服务中或GLOBAL.ASAX.VB中需要它,该怎么办?

所以我的问题是:你能以我想要的方式提供一个函数,而不使用继承吗?或者我是否必须满足于Public Class Helpful Inherits System.Web.UI.Page并更改我的代码隐藏文件以使其中包含Inherits Helpful

2 个答案:

答案 0 :(得分:1)

您是否需要预先添加项目名称?

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

或添加命名空间参考?

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

答案 1 :(得分:0)

您需要使功能公共和共享

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

End Function