在ASP.Net中按标签名称选择静态html元素

时间:2009-05-02 07:44:57

标签: asp.net

有没有人知道如何选择所有plain-html< p> ASP.net页面中的元素,服务器端?在我的情况下,我想在他们进入浏览器之前对所有这些操作应用一些文本操作。

我意识到我可以为每个添加runat = server然后再添加FindControl。但那是很多代码。

这相当于javascript的getElementsByTagName,但是服务器端。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用浏览器适配器页面: 只是一个想法:来自System.Web.UI.Page的派生类 - >我的编目

你应该创建BrowserAdapter并覆盖此页面的渲染,在输出中你会发现生成的HTML将转到客户端浏览器。在这种情况下,您可以进行一些XSLT突变或简单的XML(XPATH)替换,结果您将完成任务:)。

<browsers>
<browser refID="default">
    <controlAdapters>
        <adapter controlType="System.Web.UI.Page"
                 adapterType="yournamespace.TestAdapter" />
    </controlAdapters>
</browser>

public class TestAdapter : PageAdapter
    {
        protected override void Render(HtmlTextWriter writer)
        {
            /* Get page output into string */
            var sb = new StringBuilder();
            TextWriter tw = new StringWriter(sb);
            var htw = new HtmlTextWriter(tw);

            // Render into my writer
            base.Render(htw);

            string page = sb.ToString();

                        // Here you can change output of render

            writer.Write(page);
        }
    }

答案 1 :(得分:0)

通过过滤处理程序的输出来考虑Http过滤器模块。

服务器上没有document.getElementsByTagName的等价物,除非每个p标签都是runat = server。

http://msdn.microsoft.com/en-us/magazine/cc301704.aspx