大家好,我正在构建一个简单的 aspx 网页,它在字典中查找一个单词(获取带有查询字符串的 url),将结果注入占位符并通过从字典网站检索 css 文件来适当地格式化其内容。
显然我不知道如何解决第三点,事实上我已经尝试了多种方法,但似乎都没有奏效。
准确地说,我已成功检索到正确 css 文件的链接并将其注入页眉(尝试:Page_load、Page_Init 事件),查询结果被注入到 Button_click 事件处理程序的“结果面板”占位符中。
我还包含了我的 ASPX 标记,后跟相应的代码隐藏文件。这个项目使用 HtmlAgilityPack。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Multidictionary.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:PlaceHolder runat="server" id="hdr"></asp:PlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>
Enter URL and get contents of the page</h3>
<asp:textbox id="TextBoxURL" runat="server" height="20px" width="250px" text="http://www.vandale.nl/opzoeken?pattern=kat&lang=nn">
</asp:textbox>
<asp:button id="Button1" runat="server" text="Get Contents" onclick="Button1_Click" />
<br />
<asp:literal runat="server" id="resultpanel"></asp:literal>
</div>
</form>
</body>
</html>
背后的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using HtmlAgilityPack;
using System.Web.UI.HtmlControls;
namespace Multidictionary
{
public partial class Default : System.Web.UI.Page
{
private string dictionaryUrl = "http://www.vandale.nl";
private IEnumerable<HtmlNode> csslink;
protected void Page_Init(object sender, EventArgs e)
{
}
protected void Page_Load(object sender, EventArgs e)
{
//your code
string url = TextBoxURL.Text;
var webGet = new HtmlWeb();
var document = webGet.Load(url);
csslink = (from el in document.DocumentNode.SelectNodes("//link[@type='text/css']")
where
(el.Attributes["rel"] != null) && ("stylesheet".Equals(el.Attributes["rel"].Value))
select el);
if (csslink != null && csslink.Count() > 0)
{
HtmlLink cssLink = new HtmlLink();
cssLink.Href = dictionaryUrl + csslink.FirstOrDefault().Attributes["href"].Value;//"path to CSS";
cssLink.Attributes["type"] = "text/css";
cssLink.Attributes["media"] = "all";
hdr.Controls.Add(cssLink);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string url = TextBoxURL.Text;
var webGet = new HtmlWeb();
var document = webGet.Load(url);
var definitieDiv = from el in document.DocumentNode.Descendants()
where (el.Attributes["id"] != null) && ("content-area".Equals(el.Attributes["id"].Value))
select el;
if (definitieDiv != null && definitieDiv.Count() > 0)
{
resultpanel.Text = definitieDiv.FirstOrDefault().OuterHtml;
}
}
}
}
如果我的问题需要任何澄清,请随时与我联系。