Есть ли способ получить страницу asp.net, которая получается из XSLT-преобразования «на лету»? - PullRequest
2 голосов
/ 27 февраля 2012

У меня есть XSLT-преобразование для вывода таблицы пар ключ / значение:

<code><?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="keys">
    <table border="1">
      <xsl:apply-templates select="key" />
    </table>
  </xsl:template>
  <xsl:template match="key">
    <tr>
      <td>
        <xsl:value-of select="@name" />
      </td>
      <td>
        <pre>
          <xsl:value-of select="." />
        

В настоящее время я использую его с <asp:Xml /> серверным элементом управления.

Динамическая природа цикла страниц asp.net заставляет меня думать, что возможно создать фактическую сторону сервератеги и получить функциональность генерирования кода на лету.Это то, что возможно / хорошая идея?

Таким образом, XSLT будет содержать:

  ...
        <asp:Label runat="server"><xsl:value-of select="@name" /></asp:Label>
  ...

Примечание: мотивация моего запроса более академична, чем что-либо еще.

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Вы определенно можете сделать это.

Это необходимо сделать на этапе PreInit PreInit жизненного цикла вашей страницы. Я думаю, что если вы не используете viewstate, вы можете сделать это в PreLoad, но я не на 100%.
Насколько это хорошая идея, зависит от того, почему вы хотите это сделать.

Если вы делаете это просто для того, чтобы сделать это, то, вероятно, это плохая идея :) Вы просто делаете приложение слишком сложным. Если он отвечает некоторым функциональным потребностям, которые вам требуются, это отличная идея и элегантное решение. :)

Дополнение: Вот сайт, который я видел некоторое время назад с примером для вас. XSLT Для создания тегов .NET

2 голосов
/ 27 февраля 2012

Да, вы можете определить свой XML по-своему, а затем преобразовать эти теги в элементы управления на стороне сервера, используя XSLT. Вот базовый пример ...

<section type="Panel" id="dyna_panel_Riskfactors" GroupingText="Identified Risk factors:" Width="200px">
   <control type="CheckBoxList" id="dyna_chkl_Riskfactors" CssClass="" ToolTip="Identified Risk factors">
     <subcontrol Type="ListItem" Text="Tattooing" Value="Tattooing" Selected="False" />
     <subcontrol Type="ListItem" Text="IV drug user" Value="IV drug user" Selected="False" />
     <subcontrol Type="ListItem" Text="Dont Know" Value="Dont Know" Selected="False" />
   </control>
</section>

и затем преобразуйте XML в веб-страницу или часть веб-страницы, используя следующий код ...

  <!--For CheckBoxList-->
  <xsl:if test="@type='CheckBoxList'">
    <asp:CheckBoxList id="{@id}" CssClass="{@CssClass}" runat="server" ToolTip="{@ToolTip}" Width="{@Width}">
      <xsl:for-each select="subcontrol">
        <asp:ListItem Value="{@Value}" Selected="{@Selected}">
          <xsl:value-of select="@Text" />
        </asp:ListItem>
      </xsl:for-each>
    </asp:CheckBoxList>
  </xsl:if>

Таким образом, вы можете создать серверный элемент управления ...

0 голосов
/ 27 февраля 2012

Нет;Вы смешиваете две платформы там.Если бы вы проделали много работы с внешними методами (сделав свои собственные методы .NET доступными в xslt), вы, вероятно, могли бы заставить это работать, но я думаю, что это было бы крайне уродливо.Если вы используете xslt, вы, вероятно, должны думать о нем больше как о MVC - вы генерируете необработанный вывод (html), а не объекты на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...