#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» в макрос.
Надеюсь, это поможет кому-то еще!