在ASP.NET上连接代码绑定中的字符串时出现意外标识符



这是一个非常小的错误,我已经尝试了几个小时。

考虑背后的代码

using System;
public partial class Controls_DashboardGraph : InboundOutboundControl
{
public string GraphTitle
{
get
{
if (2>1) //To simply the logic, it will always meets this condition
{
return "The World";
}
else
{
return "All Cocoms";
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
//Somelogic here
}
}

它有一个GraphTitle变量。

我正在尝试使用首页的值来执行在线字符串连接

<%@ control language="C#" autoeventwireup="true" codefile="DashboardGraph.ascx.cs" inherits="Controls_DashboardGraph" %>
<script type="text/javascript">
var title = <%= this.GraphTitle%>;
var isInBound = "true";
<%
if (3>2) //To minimize the code, simply the logic here
{
%>
path = `Services/ChartData.asmx/RetrieveChart?title=${title}&inbound=${isInBound}`;
<%
}
else
{
%>
isInBound = "false";
path = `Services/ChartData.asmx/RetrieveChart?title=${title}&inbound=${isInBound}`;
<%
}
%>
$.ajax({
type: "GET",
url: path,
success: function (data) {
//DoSomething
}
});
</script>

我正在尝试连接字符串以获得一个路径,以便在ajax中使用。然而,当我这样做的时候,我得到了

'未捕获的语法错误:意外的标识符'World'

var title = <%= this.GraphTitle%>;

我尝试过的:

1:我以为是因为字符串中有空格。然而,当我将返回值更改为"0"时;TheWorld";,我有

未捕获引用错误:世界未定义

2:不同的蜜蜂蜇伤我尝试过:<%#%>,也没用。

我需要帮助的是:我知道这是一个非常琐碎的错误,但我已经被它困扰了一段时间。这里怎么了?为什么这种简单的字符串串联会抛出错误?

更改此项:

var title = <%= this.GraphTitle%>;

到此:

var title = "<%= Regex.Escape( this.GraphTitle ) %>";
  • 注意两件事:
    1. 外部双引号"
    2. 使用Regex.Escape作为穷人的替代品,将内存中的.NETString字符转换为转义的JavaScript字符串,因为JavaScript和.NET正则表达式共享许多转义序列(尽管这种方法并不完美,但在必要时可以使用(。
      • 因此,如果GraphTitle包含双引号字符,那么它将被呈现为JS转义引号,因此您的JS<script>元素不会被混淆

相关内容

  • 没有找到相关文章

最新更新