2011-06-29 45 views
0

我知道你不能把一個控制一個C#函數內這樣ASP.NET將控制在C#<%=功能(<control/>)%>

<%= VirtualPathUtility.ToAbsolute(<umbraco:Item field="background" runat="server" />) %> 

,但是如果可以的話我想知道將控件的值傳遞給C#函數。
一把umbraco:以上項目輸出類似於〜/媒體/ bg1.jpg

這裏就是我想要做:

<%@ Master Language="C#" MasterPageFile="/masterpages/Master.master" AutoEventWireup="true" %> 

<asp:content ContentPlaceHolderId="cphHead" runat="server"> 
    <style type="text/css"> 
    #content { 
     background: url('<%=VirtualPathUtility.ToAbsolute(<umbraco:Item field="background" runat="server" />)%>'); 
    } 
    </style> 
</asp:content> 

任何人都知道任何解決辦法嗎?提前致謝。

+1

你沒有解釋你正在嘗試做的。 'VirtualPathUtility.ToAbsolute'方法需要一個字符串(一個虛擬路徑)。 Umbraco Item控件和虛擬路徑之間有什麼關係?控件可以放在任何頁面中,因此可以有任何虛擬路徑。你想達到什麼目的? – Steven

+0

對不起,我應該解釋一下。 umbraco:Item會輸出類似〜/ media/bg1.jpg這是你所在頁面的背景。我試圖將該值傳遞給VirtualPathUtility.ToAbsolute函數。不可能嗎? – Aximili

回答

3

如果它只是一個普通的textstring那麼你可以做到以下幾點:

<%@ Master Language="C#" MasterPageFile="/masterpages/Master.master" AutoEventWireup="true" %> 
<%@ Import Namespace="umbraco" %> 
<%@ Import Namespace="umbraco.presentation" %> 
<%@ Import Namespace="umbraco.presentation.nodeFactory" %> 
<asp:content ContentPlaceHolderId="cphHead" runat="server"> 
    <style type="text/css"> 
    #content { 
     background: url('<%=VirtualPathUtility.ToAbsolute(Node.GetCurrent().GetProperty("background").Value)%>'); 
    } 
    </style> 
</asp:content> 

但是,如果「背景」屬性是媒體選擇,那麼你需要多一點的幫助遠遠不止這些,這將涉及umbraco.cms.businesslogic.media命名空間。我建議您使用Reflector或Codeplex上的源代碼庫檢出這些庫,以找出您應該使用的類以及隨後如何填充您的屬性。

HTH,

本傑明

+0

哇!不是我期望的解決方案,但它的工作原理!非常感謝本傑明! – Aximili

相關問題