注入的CSS文件未应用于注入的标记ASP.NET 4

时间:2013-05-19 16:17:31

标签: c# asp.net

大家好,我正在构建一个简单的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;
            }

        }
    }
}

如果我的问题需要澄清,请不要犹豫与我联系。

1 个答案:

答案 0 :(得分:0)

您是否在浏览器中检查了生成的html?我期待样式表缺少网址的域名部分。