【发布时间】:2019-08-19 19:14:46
【问题描述】:
我正在尝试为一个项目实现一个简单的缓存解决方法。
在项目中我有一个公共字符串:
public string noCache = DateTime.Now.Second.ToString();
我试图在 css 引用的末尾引入它,以防止拉取缓存版本。
<link rel="stylesheet" href="./css/core.css?version=<%= noCache%>">
这将使 url "./css/core.css?version=" 文字而不是插入变量。经过一番阅读,我发现.net 不支持内联表达式。奇怪的是,在我发现我这样做之前:
<link rel="stylesheet" href="./css/core.css?version=<%= noCache%>" <%= noCache%> />
无论出于何种原因,当我使用它时它都会起作用。有人可以向我解释为什么以及如何最好在没有奇怪的解决方法的情况下设置这样的东西。
AppSite.Master:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="AppSite.master.cs" Inherits="APP_Partnership.AppSite" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title><%# noCache%></title>
<link runat="server" id="CSS1" rel="stylesheet" href="<%= noCache%>"/>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div class="container">
<div class="header">
APP SITE
</div>
<div class="content">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</form>
</body>
</html>
AppSite.Master.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace APP_Partnership
{
public partial class AppSite : System.Web.UI.MasterPage
{
public string noCache = DateTime.Now.Second.ToString();
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
【问题讨论】:
-
Inline Expressions 在 ASP.NET WebForm 中支持,但是它应该放在 aspx/ascx 文件中以便评估和执行。将其放入 CSS 文件不会产生任何效果。
-
@abatishchev 这是在 AppSite.Master 页面中。这不在 css 文件中,而是使用可变尾字符串引用 css 文件以防止缓存。
-
请提供您的母版页的完整代码
-
@abatishchev 我已经更新了 Site.Master 和背后的代码
-
如果您不需要从后面的代码访问链接,请删除
runat="server"。如果您这样做,请使用databinding expression。