2

当我尝试在本地运行我的 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 行长。

非常感谢!

4

2 回答 2

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;
于 2013-05-22T19:34:28.980 回答
0

问题在于以“string addrString”开头的行上的所有“@”字符。将其更改为此,它会使大括号重新同步:

string addrString = addr.Street + " " + addr.City + ", " + addr.State + " " + addr.Postal + " " + addr.Country;

除了这么多的连接,您可能想要使用 string.Format()。

于 2013-05-22T19:35:10.733 回答