我不明白为什么在. cshtml/Razor页面中输入时无法编译:
@($"{"\""}") <-- this does not work
@($"{"'"}") <-- this also does not work
@($"{"a"}") <-- this DOES work
错误指出:
RZ1000:未终止的字符串文字。以引号(")开头的字符串必须在行尾之前终止。但是,以@和引号(@")开头的字符串可以跨多行。
CS1002:;预期
CS1513:应输入}
看起来非引号字符工作正常,但是双引号或单引号字符破坏了Razor解析插入字符串的能力,即使引号字符被转义。
所有示例在纯. cs文件中都能正常工作:
public sealed class Test
{
public string x = $"{"\""}";
public string y = $"{"'"}";
public string z = $"{"a"}";
}
怎么回事?
我的环境如下:
- . NET软件开发工具包:版本7.0.102*
- . NET运行时:第7.0.2版*
- C#:v11(预览版)**
- Visual Studio社区2022(64位):版本17.4.4**
1条答案
按热度按时间ilmyapht1#
是个窃听器。
然而,dotnet/aspnetcore github页面上的dotnet工程师认为修复它所需的工作量超过了它所带来的好处:
在进一步调查这个问题后,发现完成这个任务的要求非常高(需要在令牌化器级别上接近完整地理解C#)。
两个月后...
转移到backlog是因为我们觉得这些情况在MVC视图中并不常见,并且有一些简单的变通方法(例如,使用string.format()代替字符串插值)。
https://github.com/dotnet/aspnetcore/issues/4976