html属性中的内联表达式<%=%>

时间:2019-08-19 19:14:46

标签: c# asp.net .net webforms

我正在尝试为项目实施简单的缓存解决方法。

在项目中,我有一个公共字符串:

public string noCache = DateTime.Now.Second.ToString();

我正试图在CSS参考的末尾引入它,以防止拉取缓存的版本。

<link rel="stylesheet" href="./css/core.css?version=<%= noCache%>">

这将使URL为“ ./css/core.css?version=<%= noCache%>”,而不会插入变量。经过一番阅读后,我发现.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)
        {


        }

    }

}

1 个答案:

答案 0 :(得分:0)

我会使用UserControl来做到这一点。 这里是usercontrol ascx页面的代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CacheControl.ascx.cs" Inherits="Usercontrols_CacheControl" %>
<link rel="stylesheet" href="./css/core.css?version=<%= noCache%>">

文件后面的代码:

protected string noCache = DateTime.Now.Second.ToString();
protected void Page_Load(object sender, EventArgs e)
{

}

添加到母版页:

<%@ Register TagPrefix="MyTagName" TagName="CacheControl" Src="~/Usercontrols/CacheControl.ascx" %>

并在头部:

<MyTagName:CacheControl ID="CacheControl"  runat="server" />

页面标题中的输出如下所示:

<link rel="stylesheet" href="./css/core.css?version=3">

希望这会有所帮助。