2016-04-25 41 views
0

感謝您花時間閱讀本文。imagebutton imageurl無法在src中渲染輸出

我希望做到以下幾點,但是它沒有渲染輸出在src PARAM:

<asp:ImageButton ID="btnSearch" runat="server" ImageUrl='<%# String.Format("{0}/structure/search_icon.png", MIS.BLL.CommonBLL.Settings.SiteImageURL)%>' CssClass="search_button" /> 

的SiteImageURL是從設置行一列。

任何幫助將不勝感激,再次感謝。

+0

如果我添加,Page.Databind上述作品,但我不知道爲什麼,理想情況下,我不想這樣做... – Richard

+0

你可以做'btnSearch.DataBind ()'。該調用只會影響ImageButton。我不知道是否有一種方法可以在不調用DataBind的情況下獲得你想要的東西。 – ConnorsFan

回答

0

好,所以我自己想通了,用表達式生成器來生成我自己的方法。

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" /> 

作品一種享受!希望這可以幫助別人...