Javascript 为什么我不能在replace()中传递@符号?

Javascript 为什么我不能在replace()中传递@符号?,javascript,jquery,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,我在视图的@部分中编写了以下javascript代码 var mapping = { '@Title': 'text', '@ID': 'id', '@ParentID': 'parent', '@Narrative': 'value' } var temp = JSON.stringify(data); for (key in mapping) { temp = temp.replace(new RegExp(key, 'g'), mapping[key

我在视图的
@部分中编写了以下javascript代码

var mapping = {
    '@Title': 'text',
    '@ID': 'id',
    '@ParentID': 'parent',
    '@Narrative': 'value'
}
var temp = JSON.stringify(data);
for (key in mapping) {
    temp = temp.replace(new RegExp(key, 'g'), mapping[key]);

}
data = JSON.parse(temp.replace(/@/g, ''));
假设
data
是上面已经声明的数组。在视图中,我不能使用语句
data=JSON.parse(temp.replace(/@/g')。它抛出以下错误:

分析器错误

描述:分析资源时出错 服务此请求所必需的。请查看以下具体内容 分析错误详细信息并适当修改源文件

分析器错误消息:“/”在代码块的开头无效。 只有标识符、关键字、注释”()和“{”才有效

我传递
@
的原因是要从
temp
中删除所有
@
符号,但对于MVC代码,它会对
@
符号抛出错误

这是zeelong最初在他的文章中发布的一些数组数据


假设您要删除所有
@
,则无需在每个属性上循环并单独删除
@
,一旦对数据进行字符串化,就可以一次性删除它们

var obj={
“@a”:“val1”,
“@b”:“val2”
}
var stringy=JSON.stringify(obj)
替换的变量=stringy.replace(/@/g'')
var parsed=JSON.parse(已替换)
log(obj、stringy、replacement、parsed)
var oneline=JSON.parse(JSON.stringify(obj.replace(/@/g'))

console.log(oneline)
假设您要删除所有
@
,则无需在每个属性上循环并单独删除
@
,一旦对数据进行了字符串化,就可以一次删除它们

var obj={
“@a”:“val1”,
“@b”:“val2”
}
var stringy=JSON.stringify(obj)
替换的变量=stringy.replace(/@/g'')
var parsed=JSON.parse(已替换)
log(obj、stringy、replacement、parsed)
var oneline=JSON.parse(JSON.stringify(obj.replace(/@/g'))

console.log(oneline)
发生这种情况是因为Razor认为您正在尝试编写C代码。只需添加double@即可告诉Razor您不这么认为

data = JSON.parse(temp.replace(/@@/g, ''));
映射
变量内容也执行相同操作:

var mapping = {
    '@@Title': 'text',
    '@@ID': 'id',
    '@@ParentID': 'parent',
    '@@Narrative': 'value'
}

发生这种情况是因为Razor认为您正在尝试编写C代码。只需添加double@即可告诉Razor您不这么认为

data = JSON.parse(temp.replace(/@@/g, ''));
映射
变量内容也执行相同操作:

var mapping = {
    '@@Title': 'text',
    '@@ID': 'id',
    '@@ParentID': 'parent',
    '@@Narrative': 'value'
}


可以发布实际数据吗?@Stryner当我尝试时,它不会检测到JSON数组键,因为键前面有一个@符号。实际错误是什么?问题似乎是替换没有返回有效的JSON。请尝试
警报(temp.replace(/@/g,'))
在问题行之前查看您得到了什么。@我会从zeelong在这个链接@Joe中回答的TJ的帖子中提取数据吗?这是因为我在“@section script{}”中使用了js脚本'查看页面是否可以发布实际数据?@Stryner当我尝试时,它不会检测到JSON数组键,因为键前面有一个@符号。实际错误是什么?问题似乎是替换没有返回有效的JSON。请尝试
警报(temp.replace(/@/g'))
在问题行之前查看您得到了什么。@我会从zeelong在这个链接@Joe中回答的TJ的帖子中提取数据吗?这是因为我在“@section script{}”中使用了js脚本'视图页面的替换方法不接受@symbol,并在我的原始帖子中给出错误我相信这是MVC不喜欢在我看到的脚本部分传递@symbols进行替换。如果您无法在其中放置
@
,我将尝试的下一种方法是查找其他所有字符,并替换不匹配的字符(又名@)。但是我相信会有一个更干净的方法。替换方法不接受@symbol,并在我原来的帖子中给出了错误。我相信这是MVC不喜欢在我看到的脚本部分传递@symbols进行替换。如果您无法在其中放置
@
,我将尝试的下一个方法是查找其他每个字符和r替换不匹配的(aka,the@)。但是我相信会有更干净的方法。当我这样做时,它抛出错误CS0103:名称“Title”在当前上下文中不存在当我这样做时,它抛出错误CS0103:名称“Title”在当前上下文中不存在