Razor正在删除第二个if语句上的大括号

时间:2013-05-22 19:24:24

标签: c# razor

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

非常感谢!

2 个答案:

答案 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()。