我使用转发器创建一个包含来自数据库的值的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
?
答案 0 :(得分:1)
您是否需要预先添加项目名称?
<td><%# [ProjectName].Helpful.BeautifulFormat(Eval("MyColumnName"))%></td>
或添加命名空间参考?
或者只是放入一个模块,它随处可用。
答案 1 :(得分:0)
您需要使功能公共和共享
Public Shared Function BeautifulFormat(ByVal Whatever As String) As String
End Function