ASP.NET помещает элемент управления в C # <% = Function ()%> - PullRequest
0 голосов
/ 29 июня 2011

Я знаю, что вы не можете поместить элемент управления в функцию C #, как это

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

но мне интересно, можно ли передать значение из элемента управления в функцию C #.
Umbraco: пункт выше выводит что-то вроде ~ / media / 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 Ответ

3 голосов
/ 29 июня 2011

Если это просто текстовая строка, вы можете сделать следующее:

<%@ 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>

Однако, если свойство "background" является средством выбора медиафайлов, вам потребуется немного больше помощи, чем просто это, которое будет включать пространство имен umbraco.cms.businesslogic.media. Я предлагаю вам проверить библиотеки с помощью Reflector или репозитория исходного кода в Codeplex, чтобы узнать, какие классы вы должны использовать, и как впоследствии заполнить ваше свойство.

НТН,

Benjamin

...