#c# #asp.net
#c# #asp.net
Вопрос:
На моем веб-сайте есть следующий HTML-код:
<meta name="keywords" content="<%=Keywords%>"/>
<meta name="description" content="<%=Description%>"/>
Это на главной странице моего сайта. В коде для главной страницы у меня есть это:
private String _description = "A default description for my site";
public String Description
{
get { return _description; }
set { _description = value; }
}
private String _keywords = "my Site my Company keywords ";
public String Keywords
{
get {return _keywords; }
set { _keywords = value; }
}
Идея заключается в том, что все страницы на моем сайте будут иметь описание / ключевые слова по умолчанию, если только мне не нужно установить для них что-то другое на определенной странице (используя Master.Description = "whatever"
).
Однако у меня возникли некоторые проблемы: открывающая скобка для разделения встроенных блоков кода экранируется в сгенерированном HTML, поэтому блоки кода не работают. Вот выдержка сгенерированного HTML-кода для моей страницы:
<meta name="keywords" content="amp;<%=Keywords%>" /><meta name="description" content="amp;<%=Description%>" />
Я привык использовать C #, но я новичок в asp.net , и я не могу выработать правильный синтаксис, чтобы заставить это работать правильно. Что мне нужно сделать, чтобы встроенные блоки кода работали правильно?
Ответ №1:
Запустите свои элементы управления на стороне сервера и назначьте им значения:
<meta name="keywords" id="keywords" runat="server" />
<meta name="description" id="desc" runat="server" />
keywords.Attributes("content") = Keywords;
desc.Attributes("content") = Description;
Комментарии:
1. Это сложно с использованием основных страниц, поскольку дочерние страницы не могут видеть ключевые слова и элементы описания. Перенаправление всех изменений в эти элементы через свойства на главной странице позволяет мне легко добавлять префиксы / суффиксы.
2. Вы могли бы поместить код в код главной страницы позади. Код главной страницы, лежащий в основе файла, сможет считывать те же объекты, что и ваш файл разметки главной страницы
3. Они могут, если вы предоставляете строго типизированный доступ к ним
4. Есть ли какая-либо причина эффективности или аналогичная, чтобы сделать это таким образом, а не с помощью свойств? Я мог бы обойти свой вопрос здесь, выполнив
get {return """ _description """}
, но я хочу знать, как поместить встроенные блоки кода на страницу, подобную этой, без их экранирования.
Ответ №2:
Используйте простое / одинарное выражение привязки.
<meta name="keywords" content="<%# Keywords%>"/>
<meta name="description" content="<%# Description%>"/>
Выдать DataBind()
метод в коде-за:
if(!IsPostBack)
DataBind();