Как мне получить пользовательский мета-тег на странице?
-
23-09-2019 - |
Вопрос
У меня есть следующий код:
List<HtmlMeta> metas = new List<HtmlMeta>();
foreach (Control c in this.Page.Header.Controls)
if (c.GetType() == typeof(HtmlMeta))
{
HtmlMeta meta = (HtmlMeta)c;
if (meta.Name == "CategoryID")
strMeta = meta.Content;
}
Я создал этот пользовательский мета-тег:
<meta id ="CategoryID" name="CategoryID" content="35" />
Я прохожу через код и прерываюсь на if (meta.Name == "CategoryID")
Он переходит к мета-тегу до того, как это отобразится meta.name ="" затем завершает цикл.Он никогда не видит мой пользовательский мета-тег.
Тег перед этим - это: <meta name="verify-v1" content="AtroutoUUTAiOHzlmZOap4a5YdzOByK5v9bzwpzPy60=" />
Теперь вы можете спросить, зачем мне это делать.Я использую DotNetNuke CMS, мне нужен способ для конечного пользователя ввести параметр, необходимый для запроса, в серверный код.Кажется, я не могу вставить что-либо в URL, например строку запроса от ссылки, чтобы перейти на страницу, поэтому я попробовал мета-тег, поскольку они могут добавить это в настройках страницы (вкладки) в dnn.
Я попытался оставить идентификатор в теге и просто имя, но та же проблема.
Я ищу простое и не ресурсоемкое решение.
Любое понимание этого или обходной путь в dnn или ASP.net было бы здорово.
Заранее благодарю.
Решение 2
Мое решение действительно работает, это процесс отображения страницы в DotNetNuke.
Другие советы
Как вы добавляете мета-элементы управления на страницу?Как на самом деле добавляется тег "verify-v1" на страницу?
Я спрашиваю, потому что обычные HTML-элементы управления не отображаются в коллекции Controls , если только они не имеют runat="server"
в их объявлении, или они добавляются на страницу динамически через ваш .СЕТЕВОЙ код.
Если ваша наценка выглядит примерно так:
<meta name="CategoryID" value="<%=categoryId%>" />
Тогда вы не смогли бы найти мета-элемент управления так, как вы пытаетесь.
Вы должны не указывать идентификатор тега, так как это не поддерживается спецификацией.