在ASP.NET中将公共字符串变量打印到页面

本文关键字:打印 变量 字符串 NET ASP | 更新日期: 2023-09-27 17:57:21

这里忽略了一些基本内容,但我正在尝试设置一个变量,并将其打印在页面上的几个位置。代码背后:

public string myVariable { get {return "40"; } }

页码:

<link rel="stylesheet" type="text/css" href="/css/main.css?v=<%=myVariable%>" />

输出:

<link rel="stylesheet" type="text/css" href="/css/main.css?v=&lt;%=myVariable %>" />

这似乎与引号有关,因为当我把它放在href之外时,这是有效的。我发现如果我在代码段中放置一个字符串,它会很好地工作。

这是有效的,但不是我想要的:

<link rel="stylesheet" type="text/css" href="/css/main.css?v=<%="40"%>" />

这种行为背后的逻辑是什么?我需要做什么才能让它发挥作用?我也会选择一种更优雅的方法来做这件事。

在ASP.NET中将公共字符串变量打印到页面

您需要对html属性进行单引号引用,如下所示:

<link rel="stylesheet" type="text/css" href='/css/main.css?v=<%=myVariable%>' />

我一直在使用这个,尤其是在中继器中,当我想创建锚标签时

<a href='PageToLinkTo.aspx?id=<%# DataBinder.Eval(Container.DataItem, "Id")%>'>Link Text</a>

这只适用于aspx页面的正文。如果您在aspx页面的标题部分有链接标记,请查看此问题以了解更多信息:Expression标记中绑定字符串变量的问题

为什么不这样做:

<link rel="stylesheet" type="text/css" <%= ("href='/css/main.css?v=" + myVariable + "'") %> />

我今天确实遇到了同样的问题,并通过使用自定义代码表达式生成器解决了它。

你的代码看起来像这样:

<link rel="stylesheet" type="text/css" href="/css/main.css?v=<%$ Code:myVariable%>" />

我使用的一个很好的教程可以在这里找到,我可以修改它来适应我的应用程序。如果您需要在服务器端控件内添加代码,这也会起作用。

它真的很容易实现。

以下是我在web.config:中添加的内容

   <compilation debug="true">
      <expressionBuilders>
        <add expressionPrefix="Code" type="CodeExpressionBuilder"/>
      </expressionBuilders>
   </compilation>

在我的App_Code文件夹中,我创建了ExpressionBuilder.vb:

Imports Microsoft.VisualBasic
Imports System.Web.Compilation
Imports System.CodeDom
<ExpressionPrefix("Code")> _
Public Class CodeExpressionBuilder
    Inherits ExpressionBuilder
    Public Overrides Function GetCodeExpression(ByVal entry As BoundPropertyEntry, ByVal parsedData As Object, ByVal context As ExpressionBuilderContext) As CodeExpression
        Return New CodeSnippetExpression(entry.Expression)
    End Function
End Class

这就是我为让它发挥作用所做的一切。

试试这个:

<link rel="stylesheet" type="text/css" href=<%="/css/main.css?v="+myVariable %> />

AFAIK,整个属性必须是一个代码块,如:

href='<%= "css/main.css?v=" + myVariable %>'