如何在标记中使用扩展和实用程序方法?

时间:2009-10-19 16:02:20

标签: asp.net extension-methods markup

确定。这可能是一个非常愚蠢的问题,但无论如何我都会问它......

如何在ASP.Net标记中使用扩展和实用程序方法?例如,(比如说)我有一个名为“ToExampleString()”的DateTime扩展方法(包含在我的Common.Extensions项目的DateTimeExtensions类中),我想在ListView的ItemTemplate中使用它标记:

<ItemTemplate>
    <span><%# ((DateTime)Eval("DateStarted")).ToExampleString() %></span>
</ItemTemplate>

我收到以下错误:

'System.DateTime'不包含'ToExampleString'的定义,并且没有可以找到接受类型'System.DateTime'的第一个参数的扩展方法'ToExampleString'(你是否缺少using指令或者装配参考?)

该页面根本看不到扩展方法。

同样,如何让我的页面标记意识到实用程序类:

<span><%# ExampleUtility.ProcessDate(Eval("DateStarted") %></span>

我需要采取哪些步骤才能使这些东西有效?我想我忽略了一些明显的东西?

由于

4 个答案:

答案 0 :(得分:11)

您需要在页面顶部导入命名空间,正如其他人所说的那样

<%@ Import Namespace="Common.Extensions"%>

或者在web.config中全局

<system.web>
  <pages>
    <namespaces>
      <add namespace="Common.Extensions"/>
    </namespaces>
  </pages>
</system.web>

如果您只需要访问公共模块(或静态类)的方法,只需导入应用程序的根命名空间。

答案 1 :(得分:8)

<%@ Import Namespace="Common.Extensions" %>

我相信你可以在web.config中为你的所有标记做到这一点。

答案 2 :(得分:2)

您必须在页面顶部导入命名空间:

<%@ Import Namespace="Common.Extensions"%>

答案 3 :(得分:0)

命名空间?

您应该在aspx标记中添加using / import指令