我要求将邮件发送到客户端,其中特定部分为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>)
帮助感谢!
答案 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");