好,所以我自己想通了,用表達式生成器來生成我自己的方法。
CustomBuilder.vb
Namespace test
Public Class CustomBuilder
Inherits ExpressionBuilder
Public Overrides Function GetCodeExpression(entry As BoundPropertyEntry, parsedData As Object, context As ExpressionBuilderContext) As CodeExpression
Dim type1 As Type = entry.DeclaringType
Dim descriptor1 As PropertyDescriptor = TypeDescriptor.GetProperties(type1)(entry.PropertyInfo.Name)
Dim expressionArray1 As CodeExpression() = New CodeExpression(0) {}
expressionArray1(0) = New CodePrimitiveExpression(entry.Expression.Trim())
Dim temp As [String] = entry.Expression
Return New CodeCastExpression(descriptor1.PropertyType, New CodeMethodInvokeExpression(New CodeTypeReferenceExpression(MyBase.[GetType]()), "GenLink", expressionArray1))
End Function
Public Shared Function GenLink(link As [String]) As [String]
Return String.Format("{0}{1}", CommonBLL.Settings.SiteImageURL, link)
End Function
End Class
End Namespace
Web.config
<compilation debug="true" strict="true" targetFramework="4.0">
<expressionBuilders>
<add expressionPrefix="GenLink" type="test.CustomBuilder"/>
</expressionBuilders>
</compilation>
page
<asp:ImageButton ID="btnSearch" runat="server" ImageUrl="<%$ GenLink:/structure/search_icon.png %>" CssClass="search_button" />
作品一種享受!希望這可以幫助別人...
如果我添加,Page.Databind上述作品,但我不知道爲什麼,理想情況下,我不想這樣做... – Richard
你可以做'btnSearch.DataBind ()'。該調用只會影響ImageButton。我不知道是否有一種方法可以在不調用DataBind的情況下獲得你想要的東西。 – ConnorsFan