0

我有以下代码:

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 中的页面(选项卡)的设置中。

我已经尝试在标签中省略 id 而只是名称,但同样的问题。

我正在寻找一个简单且非资源密集型的解决方案。

在 dnn 或 ASP.net 中对此或解决方法的任何见解都会很棒。

提前致谢。

4

2 回答 2

1

您如何将元控件添加到页面?“verify-v1”标签实际上是如何添加到页面中的?

我问是因为普通的 HTML 控件不会出现在 Controls 集合中,除非它们runat="server"在其声明中,或者它们是通过您的 .NET 代码动态添加到页面中的。

如果您的标记看起来像这样:

<meta name="CategoryID" value="<%=categoryId%>" />

然后您将无法以您尝试的方式找到元控件。

您应该省略标签的 ID,因为规范不支持。

于 2010-03-02T10:50:32.420 回答
0

我的解决方案确实有效,它是在 DotNetNuke 中呈现页面的过程。

于 2010-03-09T14:34:43.910 回答