当我尝试在本地运行 C# 应用程序时,出现了一个非常奇怪的错误。我是 C# 网络开发新手,所以我可能会错过一些简单的东西。我搜索了一段时间,发现了一些非常相似的问题,但我找不到任何人因为同样的原因出现此错误。
在导致错误的 cshtml 文件顶部,我有以下代码:
我的代码:
@{
var addr = ViewBag.Address;
if (addr == null)
{
throw new InvalidOperationException("Address is null");
}
string addrString = @addr.Street + " " + @addr.City + ", " + @addr.State + " " + @addr.Postal + " " + @addr.Country;
addrString = addrString.Trim();
int lastSpot = addrString.Length - 1;
if (addrString[lastSpot] == ',')
{
addrString = addrString.Remove(lastSpot);
}
}
当我运行它时,我收到此错误。如果我删除第二个 if 语句,错误就会消失 错误:
编译器错误消息:CS1513:}预期
来源错误:
Line 619: }
Line 620: }
Line 621:}
当我查看 Razor 生成的文件时,我看到以下内容:请注意,第二个右大括号已被删除:
Line 55: if (addrString[lastSpot] == ',')
Line 56: {
Line 57: addrString = addrString.Remove(lastSpot);
Line 58:
Line 59:
Line 60: #line default
Line 61: #line hidden
Line 62: BeginContext("~/Views/Home/ResolveAddress.cshtml", 438, 268, true);
我不知道为什么第二个大括号没有被识别,任何建议都会很棒。 另外,我的 cshtml 文件只有 208 行长。
非常感谢!
最佳答案
行中:
string addrString = @addr.Street + " " + @addr.City + ", " + @addr.State + " " + @addr.Postal + " " + @addr.Country;
@ 符号不是必需的,因为您不想在 C# 和标记之间切换。他们很可能导致问题。
所以解决办法是:
string addrString = addr.Street + " " + addr.City + ", " + addr.State + " " + addr.Postal + " " + addr.Country;
关于c# - Razor 正在删除第二个 if 语句中的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700013/