これは私自身の方法を生成するためにexpressionbuilderを使用しています。
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" />
これが他の人に役立つことを願っています...
PageDatabindを追加しても、私は理由は分かりませんが、理想的にはこれをしたくありません。 – Richard
'btnSearch.DataBind () 'を返します。その呼び出しはImageButtonにのみ影響します。 'DataBind'をどこかで呼び出さずに、あなたが望むものを得る方法があるかどうかは分かりません。 – ConnorsFan