Как мне получить доступ к строке запроса в шаблоне Umbraco?

#templates #url #umbraco

#шаблоны #url #umbraco

Вопрос:

Я пытаюсь получить доступ к строке запроса непосредственно из шаблона в Umbraco, но, похоже, не могу с этим разобраться..

Например: /mypage.aspx?p=bek

Я могу сделать это с помощью <%=HttpContext.Current .Запрос[«p»]%>, но я хочу, чтобы он был в поле…

Что-то вроде этого:

Есть идеи?

Комментарии:

1. Да, я как раз собирался ответить тем же решением. Выглядит неплохо.

2. Похоже, что это может сделать ваш сайт уязвимым для XSS-атак. В этом случае вы отображаете неподтвержденный ввод на страницу. Стоит проверить, что ваш код не оставляет вас открытым для этого. en.wikipedia.org/wiki/Cross-site_scripting

3. Хорошая мысль, Тим. Будет ли umbraco.library:RequestQueryString(‘Yourstring’) безопаснее? Выполняет ли он какую-либо проверку XSS?

4. Спасибо за обратную связь, ребята! Есть предложения?

5. Привет, Бек, ASP.NET включает проверку XSS по умолчанию на <script> и другие вредоносные входные данные, которые вы можете отключить, изменив атрибут ValidateRequest <страницы> ValidateRequest на «false» в вашем web.config.

Ответ №1:

Хорошо, я это исправил.

Нашел это:http://forum.umbraco.org/yaf_postst6663_Get-querystring-in-template.aspx

Если кому-то еще интересно, вы делаете следующее.. Создайте xslt-файл с именем «QueryStringExtractor» и вставьте приведенный ниже код туда, где ему место.

 <xsl:param name="currentPage"/>
<xsl:variable name="yourvalue" select="//macro/myparam" />

<xsl:template match="/">

<!-- start writing XSLT -->
<xsl:value-of select="$yourvalue" />

</xsl:template>
  

Сохраните и обновите страницу Umbraco, и вы увидите макрос в разделе «Макросы» с тем же именем.
В макросе вы добавляете параметр «myparam» (я помещаю его в виде текста). Сохранить!

Затем в вашем шаблоне просто выполните следующий код, и все готово!

 <ul>
    <umbraco:Macro Alias="QueryStringExtractor" myparam="[@p]" runat="server"></umbraco:Macro>
</ul>
  

Итак, теперь, когда вы вводите строку запроса «?p = что-то», вы получите «что-то», написанное на странице.

Обратите внимание, что вы можете передать любую букву «p» в макрос.

Надеюсь, это поможет кому-то еще!