2009-10-19 55 views
7

好的。這可能是一個非常愚蠢的問題,但我仍然會問它...如何在標記中使用擴展和實用方法?

如何在我的ASP.Net標記中使用擴展和實用程序方法?例如,(說)我有一個名爲「ToExampleString()」(載於我Common.Extensions項目DateTimeExtensions類)日期時間擴展方法,我想在ListView的ItemTemplate使用它在我的標記:

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

我收到以下錯誤:

「System.DateTime的」不包含「ToExampleString」,沒有擴展方法「ToExampleString」接受型「的System.DateTime」的第一個參數的定義可以發現(您是否缺少使用指令或裝配參考?)

該頁面無法看到擴展方法。

同樣,如何讓我的網頁的標記知道一個實用類:

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

什麼步驟我需要做這個東西的工作?我假設我忽略了一些愚蠢明顯的東西?

感謝

回答

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

我相信你能做到這一點在web.config中所有的標記。

+0

謝謝尤里。我在後面的代碼中使用了「使用Common.Extensions」語句。這應該工作嗎? – 2009-10-19 16:07:56

+0

不,我相信你也需要把它放在標記中。 – 2009-10-19 16:09:19

+0

後面代碼中的using語句允許您的代碼隱藏在類的後面以查看擴展方法,但您也必須在標記文件中導入名稱空間。 – 2009-10-19 16:09:47

0

命名空間?

您應該添加在ASPX標記使用/ import指令

2

你要導入的命名空間,在頁面的頂部:

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

您需要導入命名空間無論是在頂部頁面正如其他人在你的web.config說

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

或全球

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

如果您只需訪問公共模塊(或靜態類)的方法,只需導入應用程序的根名稱空間。

+0

感謝您的額外web.config信息! – 2009-10-19 17:35:18