Добавление метатега программно в C#

Деревья выражений являются представлением в оперативной памяти выражения, например, арифметическим или булевым выражением. Например, рассмотрите арифметическое выражение

a + b*2

, Так как * имеет более высокий приоритет оператора, чем +, дерево выражений создается как этот:

    [+]
  /    \
 a     [*]
      /   \
     b     2

Наличие этого дерева, это может быть оценено для любых значений a и b. Кроме того, можно преобразовать его в другие деревья выражений, например, для получения выражения.

, Когда Вы реализуете дерево выражений, я предложил бы создать Выражение базового класса . Полученный из этого, класс BinaryExpression использовался бы для всех двоичных выражений, такой как + и *. Тогда Вы могли представить VariableReferenceExpression к ссылочным переменным (таким как a и b), и другой класс ConstantExpression (для 2 от примера).

дерево выражений во многих случаях создается как результат парсинга входа (от пользователя непосредственно, или из файла). Для оценки дерева выражений я предложил бы использовать Шаблон "посетитель" .

27
задан Peter Mortensen 9 December 2016 в 17:54
поделиться

4 ответа

Хорошо, я проверил ответ от veggerby , и он отлично работает:

В

section:

<asp:PlaceHolder id="MetaPlaceHolder" runat="server" />

Обратите внимание, что Visual Studio может отображать предупреждение в теге PlaceHolder, поскольку он не распознается как известный элемент внутри заголовка, но вы можете игнорировать это. Это работает.

В коде C #:

HtmlMeta meta = new HtmlMeta();
meta.Name = "robots";
meta.Content = "noindex,follow";
MetaPlaceHolder.Controls.Add(meta);

В качестве альтернативы (поскольку у вас уже есть блоки кода, использующие <%%> в разделе заголовка), вы можете пометить мета напрямую и получить только значение со стороны сервера:

<meta name="robots" content="<%=GetMetaRobotsValueFromDatabase()%>" />
39
ответ дан 28 November 2019 в 04:52
поделиться

Или вы можете просто поместить свой метатег в заголовок с идентификатором и runat = "server" ... затем в коде, стоящем за ним, скажем

myMetaTag.Content = "noindex,follow";

или

myMetaTag.Visible = false;

или все, что угодно.

6
ответ дан 28 November 2019 в 04:52
поделиться

Я не тестировал, но, возможно, вы можете добавить внутри тега и добавьте туда метатеги.

2
ответ дан 28 November 2019 в 04:52
поделиться

Попробуйте переместить все, что вы делаете в <% ....%>, в код программной части. Если вы используете сценарий для добавления содержимого на страницу, вы можете заменить его элементом управления asp: Literal, а затем установить значение, которое вы ранее вычисляли в блоке сценария, для кода программной части и установить Literal.Text на это значение.

5
ответ дан 28 November 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: