当我尝试在本地运行我的C#应用程序时,我收到一个非常奇怪的错误。我是c#中web开发的新手,所以我可能会遗漏一些简单的东西。我已经搜索了一段时间,发现了一些非常相似的问题,但出于同样的原因,我找不到任何有此错误的人。
在我的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行。
非常感谢!
答案 0 :(得分:3)
在行中:
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;
答案 1 :(得分:0)
问题是该行的所有“@”字符以“string addrString”开头。将其更改为此,它会同步恢复大括号:
string addrString = addr.Street + " " + addr.City + ", " + addr.State + " " + addr.Postal + " " + addr.Country;
除此之外,你可能还想使用string.Format()。