0

我有一个允许用户编辑表格的网络应用程序。我已经覆盖了 Render 方法,以便将此表(带有编辑)保存为 .html 文件,稍后我将其转换为图像。图像中有一些我不想要的东西——特别是两个按钮和一个 DropDownList。这是呈现的感兴趣的 HTML:

<div class="centered" id="selectReport">
    <select name="Archives" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;Archives\&#39;,\&#39;\&#39;)&#39;, 0)" id="Archives" style="width:200px;">
        <option selected="selected" value="Dashboard_Jun-2012">Dashboard_Jun-2012</option>
    </select>
</div>

这是 Render 方法:

protected override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new StringWriter()))
    {

        base.Render(htmlwriter);
        string renderedContent = htmlwriter.InnerWriter.ToString();

        string output = renderedContent.Replace(@"<input type=""submit"" name=""viewReport"" value=""View Report"" id=""viewReport"" />", "");
        output = output.Replace(@"<input type=""submit"" name=""redoEdits"" value=""Redo Edits"" id=""redoEdits"" />", "");

        Regex regex = new Regex(@"<select name=""Archives""[.\\n]*(?<date>\\w{3}-\\d{4})[.\\n]*</select>");
        Match match = regex.Match(output);
        Response.Write(match.Success);
        string date = match.Groups["date"].Value;
        Regex.Replace(output, @"<select name=""Archives""[.\\n]*</select>", date);

        writer.Write(renderedContent);
    }
}

对 Replace 的两个调用按预期工作并删除了两个按钮。我试图用 DropDownList 做的是用它显示的值替换它,但是模式匹配失败,因为 Response.Write(match.Success) 打印“False”。

据我了解,这个正则表达式应该可以工作。当然,我尝试了很多替代方案,但没有任何成功。

任何建议表示赞赏。

问候。

4

0 回答 0