c# - Razor 正在删除第二个 if 语句中的大括号

标签 c# razor

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

相关文章:

c# - 我可以将 SqlDependency 与多个监听器/负载平衡一起使用吗

c# - LINQ 中的聚合与求和性能

c# - ninject 中具有多种实现的接口(interface)

c# - 有没有比在 mvc razor View 中使用 if 语句显示带有角色的 html 代码更好的方法

c# - 在 Razor 中编码部分 URL

asp.net-mvc-3 - ExpandoObject、匿名类型和 Razor

asp.net-mvc-4 - 带有条件数据属性的奇怪行为

c# - 你如何使用#define?

c# - 如何更改 HttpClient 响应的编码

c# - 必需的 DataAnnotations 需要 BeginForm 才能在 MVC5 中触发验证