2013-02-14 34 views
0

我想寫一個asp.net轉發器控件的擴展方法,它允許我在轉發器模板中調用以下代碼。這就是說我想在中繼器上調用我自己的Eval方法。將擴展方法添加到ASP.net轉發器的NamingContainer

<%# UmbracoEval("propertyName") %> 

我試着瞄準Repeater控件本身還有NamingContainer但我得到的集裝箱被保護看到可訪問性錯誤。

這甚至可能嗎?我從來沒有從標記中調用過擴展方法,所以我不確定。謝謝。

回答

1

您仍然需要評估或綁定 - UmbracoEval(Eval("propertyName"))UmbracoEval(Bind("propertyName"))

Eval和Bind都返回一個對象,所以對象的擴展方法不是一個好主意。

但是,您可以在後面的代碼中創建UmbracoEval,並從aspx調用它。

protected string UmbracoEval(object eval) 
{ 
    return eval.ToString() + " abc"; // do something 
} 
+0

感謝您的回覆。這是一種方法,我將有40-50的主頁,所以我可能會創建一個輔助類。我想遠離輔助方法,但它看起來最簡單/最可行。 – 2013-02-14 21:16:19

+0

如果是這樣的話,你可以創建一個擴展方法,比如[public static string UmbracoEval(this object eval)...] – Win 2013-02-14 21:21:16