MVC 3 到 MVC 4 剃刀编译器错误

本文关键字:MVC 编译器 错误 剃刀 | 更新日期: 2023-09-27 17:56:50

我收到运行时错误,说我缺少一个结束括号。错误发生在我设置电子邮件文本的行上

此代码适用于 MVC 3,但不适用于 MVC 4。我知道新的 Razor 更严格,但从语法上讲,这段代码看起来仍然正确。所有括号都匹配,等等。

有什么想法吗?

 @if (Model.Counselors != null)
   {
                for (var i = 0; i < Model.Counselors.Count; i++)
                {
                    string counselorDivId = "counselorname" + i.ToString();
                    string deleteLink = "<a class='"icon delete counselor'" data-attr-divid='"" + @counselorDivId + "'" data-attr-id=" + @Model.Counselors[i].Id + " style='"float:right;'"></a>";
                    string emailText = (!String.IsNullOrEmpty(Model.Counselors[i].CounselorContactEmail) ? (Model.Counselors[i].CounselorContactEmail.Length < 29 ? Model.Counselors[i].CounselorContactEmail : "Email " + Model.Counselors[i].CounselorContactName) : "");
                }
    }

MVC 3 到 MVC 4 剃刀编译器错误

奇怪的是,但我想从逻辑上讲,嵌套的"@"炸毁了 MVC 4/Razor 2。通过删除嵌套的"@"前缀,代码已成功解析并执行

@if (Model.Counselors != null)
       {
                    for (var i = 0; i < Model.Counselors.Count; i++)
                    {
                        string counselorDivId = "counselorname" + i.ToString();
                        string deleteLink = "<a class='"icon delete counselor'" data-attr-divid='"" + counselorDivId + "'" data-attr-id=" + Model.Counselors[i].Id + " style='"float:right;'"></a>";
                        string emailText = (!String.IsNullOrEmpty(Model.Counselors[i].CounselorContactEmail) ? (Model.Counselors[i].CounselorContactEmail.Length < 29 ? Model.Counselors[i].CounselorContactEmail : "Email " + Model.Counselors[i].CounselorContactName) : "");
                    }
        }

试试

    @(if (Model.Counselors != null)
       {
            for (var i = 0; i < Model.Counselors.Count; i++)
            {
                string counselorDivId = "counselorname" + i.ToString();
                string deleteLink = "<a class='"icon delete counselor'" data-attr-divid='"" + @counselorDivId + "'" data-attr-id=" + @Model.Counselors[i].Id + " style='"float:right;'"></a>";
                string emailText = (!String.IsNullOrEmpty(Model.Counselors[i].CounselorContactEmail) ? (Model.Counselors[i].CounselorContactEmail.Length < 29 ? Model.Counselors[i].CounselorContactEmail : "Email " + Model.Counselors[i].CounselorContactName) : "");
            }
})

以"字符串电子邮件文本..."开头的最后一行似乎存在问题。 出于某种原因,剃刀不喜欢三元语句中的小于号。 当我将其切换为大于符号时,它看起来有效。 我不确定这是否是剃须刀中的错误。