4

我是使用 IIS 的新手。我已将我的 ASP.NET 应用程序发布到 IIS 服务器中,该应用程序使用第三方 HTML 加载器,该加载器加载 HTML,但在我发布时不应用 .css 文件中的效果。我在 HTML 的 head 标记中添加以下内容

<link href="~/input/docgenix.css" rel="stylesheet" type="text/css" />

我已将 CSS 文件保存在已发布应用程序的输入文件夹中。

另一方面,如果从 Internet 上的某个预先存在的页面的源代码中添加 HTML 以及指向其 CSS 文件的链接,则可以看到 CSS 文件的效果。例如:

<link rel="stylesheet" type="text/css" href="http://cdn.sstatic.net/stackoverflow/all.css">

我的猜测是我的 CSS 没有与我的应用程序一起发布。请帮帮我。如何正确发布此 CSS 文件?

4

2 回答 2

2

文件路径的~一部分(这意味着“应用程序根”)在客户端无法识别。

您有两个选择 - 生成<link>元素服务器端 ( runat="server") 并在那里填充href属性(在哪里~被识别,使用Page.ResolveUrl()),或者构造一个不包括波浪号的适当相对路径(这可能更有效)。

相对路径

~如果您的应用程序托管在域根级别,则可能只需要丢失波浪号 ( ):

<link href="/input/docgenix.css" rel="stylesheet" type="text/css" />

服务器端解决方案:

无论 Web 应用程序是托管在域根级别还是在文件夹 ( mysite.com/myappvs mysite.com) 中,这都会起作用,但效率可能会低一些。

在标记中:

<link id="lnk" runat="server" rel="stylesheet" type="text/css" />

在代码隐藏中:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        lnk.Attributes["href"] = Page.ResolveUrl("~/input/docgenix.css");
    }
}

(注:这是未经测试的)

于 2012-11-23T10:17:03.090 回答
1

你试过这个吗?:

<link href="<%= Page.ResolveUrl("~/input/docgenix.css") %>"  rel="stylesheet" type="text/css" />
于 2012-11-23T10:16:44.447 回答