【问题标题】:ASP.NET MasterPage, doesn't display my <%=CodeBehindVar %>ASP.NET 母版页,不显示我的 <%=Code Behind Bar %>
【发布时间】:2013-04-09 22:30:16
【问题描述】:

这是我想做的一个例子:

内容端(Structure.master):

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Structure.master.cs" Inherits="Structure" %>

<!DOCTYPE HTML>
<html>
<head runat="server">
    <title>Bienvenue sur</title>
    <meta charset="utf-8" content="" />
    <link runat="server" href="App_Themes/Global/Metro.css?v=22" rel="stylesheet" type="text/css" />
    <link runat="server" href="App_Themes/Global/Site.css?v=<%=Version %>" rel="stylesheet" type="text/css" />
    <link runat="server" href="App_Themes/Global/Structure.css?v=22" rel="stylesheet" type="text/css" />

和代码隐藏(Structure.master.cs):

using System;
using System.Linq;
using BaseInstanceEntity = Library.Common.Entities.BaseEntities.BaseInstanceEntity;
using BaseInstanceManager = Library.Manager.BaseInstanceManager;

public partial class Structure : System.Web.UI.MasterPage
{
    public string Version { get; set;}

    protected void Page_Load(object sender, EventArgs e)
    {
        Version = System.Configuration.ConfigurationManager.AppSettings["Version"].Replace(".", "");

如图所示,我想在标题中显示Version var,作为缓存控件。当我执行上面的代码时,行上的结果是:

<link href="../App_Themes/Global/Site.css?v=&lt;%=Version %>" rel="stylesheet" type="text/css" />

就像代码没有被解释一样。我无法找到解释。为什么会这样?

【问题讨论】:

  • 你试过 runat="server" 吗?
  • 链接标签上有“runat=server”,头部标签也有。

标签: c# master-pages webforms


【解决方案1】:

也许应该是这样的:

<link runat="server" 
      href='<%# string.Format("{0}?v={1}", Page.ResolveUrl("~/App_Themes/Global/Site.css"), Version)%>' 
      type="text/css" />

【讨论】:

  • 我正在通过您的代码获得 作为结果,浏览器端。
【解决方案2】:

好吧,我迟到了这个问题,但是当我需要动态创建 CSS 链接时,我只需在后面的代码上生成整个标签,然后将其植入标记上,如下所示:

public partial class WebForm1 : System.Web.UI.Page
{
    public string link;
    protected void Page_Load(object sender, EventArgs e)
    {
        string ver = "1.0.0";
        link = "<link rel=\"stylesheet\"  href=\"../App_Themes/Global/Site.css?v=" + ver + "\"/>";
    }
}

然后标记

 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<%= link %>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>

希望这将有助于其他访问此页面的人!

【讨论】:

  • 我终于使用了 RadStyleSheetManager (telerik.com/help/aspnet-ajax/stylesheetmanager.html)(我们拥有 Telerik),它更容易。感谢您的回答,但我无法在标题标签中嵌入“”。我不明白为什么微软出售的这种“顶级”技术在具体实施时如此糟糕。怎么回事!他妈的 !!!我永远不会再从事这些事情的工作。
  • 你不需要嵌入任何东西,标签&lt;%= link %&gt;将在页面被浏览器渲染之前被处理,标签将转换成它所对应的任何文本。即使您在 HTML 标记之前使用标记方式,文本也会在其他任何事情发生之前打印在页面中,因为它是在服务器端处理的。如果您仍在处理此问题,请发布您的代码,我会尽力提供帮助
【解决方案3】:
    public static string Version
    {
        get
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
            return String.Format("{0}.{1}", fvi.ProductMajorPart, fvi.ProductMinorPart);
        }
    }

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    相关资源
    最近更新 更多