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

C# 注入的CSS文件未应用于注入的标记ASP.NET 4,c#,asp.net,C#,Asp.net,大家好,我正在构建一个简单的aspx网页,它可以在字典中查找单词(使用查询字符串获取url),将结果注入占位符,并通过从字典网站检索css文件来适当格式化其内容 显然,我不知道如何解决第三点,事实上,我尝试了多种方法,但似乎都不管用 准确地说,我已经成功地检索到一个指向正确css文件的链接,并将其注入到页面标题中(尝试:page_load,page_Init event),查询结果被注入到Button_click事件处理程序中的“resultpanel”位置 我还包括了我的ASPX标记以及相应的

大家好,我正在构建一个简单的aspx网页,它可以在字典中查找单词(使用查询字符串获取url),将结果注入占位符,并通过从字典网站检索css文件来适当格式化其内容

显然,我不知道如何解决第三点,事实上,我尝试了多种方法,但似乎都不管用

准确地说,我已经成功地检索到一个指向正确css文件的链接,并将其注入到页面标题中(尝试:page_load,page_Init event),查询结果被注入到Button_click事件处理程序中的“resultpanel”位置

我还包括了我的ASPX标记以及相应的代码隐藏文件 此项目使用HtmlAlityPack

<%@ 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>

输入URL并获取页面内容

代码隐藏

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;
            }

        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
Net系统;
使用System.IO;
使用HtmlAgilityPack;
使用System.Web.UI.HTMLControl;
命名空间多字典
{
公共部分类默认值:System.Web.UI.Page
{
专用字符串字典YURL=”http://www.vandale.nl";
私有IEnumerable csslink;
受保护的无效页_Init(对象发送方,事件参数e)
{
}
受保护的无效页面加载(对象发送方、事件参数e)
{
//你的代码
字符串url=TextBoxURL.Text;
var webGet=new HtmlWeb();
var document=webGet.Load(url);
csslink=(来自document.DocumentNode.SelectNodes(//link[@type='text/css'])中的el)
哪里
(el.Attributes[“rel”]!=null)和&(“样式表”.Equals(el.Attributes[“rel”].Value))
选择el);
如果(csslink!=null&&csslink.Count()>0)
{
htmlink cssLink=新的htmlink();
cssLink.Href=dictionaryUrl+cssLink.FirstOrDefault().Attributes[“Href”].Value;/“CSS路径”;
cssLink.Attributes[“type”]=“text/css”;
cssLink.Attributes[“媒体”]=“全部”;
hdr.Controls.Add(cssLink);
}
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
字符串url=TextBoxURL.Text;
var webGet=new HtmlWeb();
var document=webGet.Load(url);
var definitieDiv=来自document.DocumentNode.subjects()中的el
其中(el.Attributes[“id”!=null)&&(“content area”.Equals(el.Attributes[“id”].Value))
选择el;
if(definitieDiv!=null&&definitieDiv.Count()>0)
{
resultpanel.Text=definitieDiv.FirstOrDefault().OuterHtml;
}
}
}
}

如果我的问题需要澄清,请随时与我联系。

您是否在浏览器中检查了生成的html?我希望样式表缺少url的域部分。

谢谢您的关注,是的,我有,显然一切都是正确的:我怀疑这与两次注入的顺序有关。我还检查了我正在检索正确的CSS文件。我错过了vandals前面的http关键字。nlI检查了“Show source”,它就在那里。如果它没有出现在我的评论中,那是因为它被格式化为按堆栈溢出的链接。你能给出一个结果html的示例吗?我想不出哪里出了问题。感谢你的建议,我(显然)解决了这个问题,服务器端代码没有在链接中添加属性rel=“stylesheet”,因此Chrome拒绝应用注入的样式。