我正在尝试基于Request.QueryString
变量设置我的 css 主题。我用于选择要使用的 Css 主题的代码在函数中,但是该函数被呈现为输出,而不是被评估并呈现输出。
使用<%= GetCssTheme() %>
使其呈现为
<link href="Content/<%= GetCssTheme() %>.css" rel="Stylesheet">
但是,如果我使用<%= "" + GetCssTheme() %>
它会正确呈现为
<link href="Content/ThemeA.css" rel="Stylesheet">
这是一个说明问题的小示例:
<%@ Page Language="vb" %>
<script language="vbscript" runat="server">
Public Function GetCssTheme() As String
Select Case Request.QueryString("SomeValue")
Case 2
Return "ThemeB"
Case 3
Return "ThemeC"
Case Else
Return "ThemeA"
End Select
End Function
</script>
<html>
<head runat="server">
<link href="Content/<%= GetCssTheme() %>.css" rel="Stylesheet" />
</head>
<body>
Test
</body>
</html>
为什么我需要在我的函数名前面指定一个空白字符串才能使其工作?
我也尝试过其他各种方法:
使用单引号代替双引号
使用
<%= GetCssTheme().ToString() %>
使用
<% Response.Write(GetCssTheme()) %>
使用
<%
Dim s as String
s = GetCssTheme()
Response.Write(s)
%>
所有这些都错误地呈现 ASP.Net 代码本身,而不是对其进行评估并输出结果。
我尝试过的唯一真正有效的方法是使用内联代码而不是调用函数,或者在函数调用中添加一个空白字符串。