如何在asp.net中使用C#读取特定的DIV内容?

时间:2013-12-16 11:21:04

标签: asp.net email c#-4.0 stringbuilder

我要求将邮件发送到客户端,其中特定部分为aspx页面的div。我创建了一个示例方法,它在server上执行页面并在StringBuilder对象中返回HTML标记。   这很好用。现在,我想获得特定Div内容的HTML而不是整个返回页面内容。

代码:

    protected void ReadPage()
        {
            //StreamReader reader = new StreamReader(Server.MapPath("CompleteOrder.aspx"));
            //string readFile = reader.ReadToEnd();

            ////*** somewhere in an aspx page - preferably a different one to the one you are emailing but doesnt have to be******
            StringWriter pageContents = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(pageContents);
            Server.Execute("CompleteOrder.aspx", htw);
            MailBiz ObjMailBiz = new MailBiz();
            string Username = Session["UserName"].ToString();
            string email = Session["EmailID"].ToString();
            string strSubject = "Test Mail";
            bool issent = ObjMailBiz.SendEmail(Username, email, strSubject, pageContents.ToString());
            if (issent)
            {
                //mail sent successfully
            }
            else
            {
                //failed to sent the mail


      }
}

我想知道如何从此返回的字符串中读取特定的Div内容吗? 例如:阅读id =“content”(<div id='content'>some other innerdivs tables etc</div>)

的div

帮助感谢!

3 个答案:

答案 0 :(得分:3)

您可以使用HtmlAgilityPack加载HTML并搜索相关的div,如下所示:

StringWriter pageContents = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(pageContents);
Server.Execute("CompleteOrder.aspx", htw);

HtmlDocument html = new HtmlDocument();
html.LoadHtml(pageContents.ToString());

HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@id='content']");

...Here you can access node.InnerText for your message

答案 1 :(得分:0)

将div中的runat服务器属性放入。 因此它将以c#代码提供。

为你的例子 使用

  

content.innerHTML

  

content.InnerText

获取div内容

由于

答案 2 :(得分:0)

您可以使用用户控件而不是页面,然后在页面元素中加载控件然后像这样的

来查找控件
Page pa = new Page();
pa.LoadControl("CompleteOrder.ascx");
pa.FindControl("content");