ASP.NET如何解决CS1513:}页面上的预期错误

时间:2012-02-23 03:52:24

标签: asp.net compiler-errors viewengine generated-code

在浏览器中查看我的ASP.NET页面时,我在运行时收到错误。我没有得到任何构建错误但是我在运行时遇到以下编译器错误:

编译错误

描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并相应地修改源代码。

Compiler Error Message: CS1513: } expected

Source Error:


Line 329:            #line hidden
Line 330:            __output.Write("\r\n\t\t\t</div>\r\n\t\t");
Line 331:        }
Line 332:        
Line 333:        private System.Web.UI.Control __BuildControl__control7() {

Source File: c:\Windows\Microsoft.NET\Framework\v1.1.4322\
    Temporary ASP.NET Files\xxxxxxxx\450ffa78\d46d847d\
    k1gsz9dj.0.cs    Line: 331 

我在源代码中找不到任何遗漏},并且此错误发生在Temporary ASP.NET Files目录中存在的生成的代码文件中。如何将此跟踪到我的页面中的页面或用户控件中实际格式错误的代码行?

6 个答案:

答案 0 :(得分:13)

如果错误代码与以下内容相关:

变量名与保留字相同,则可以重命名变量。

代码段,例如:

@model MyModel
{
    var appname = @Model.Apps.FirstOrDefault(x => x.ID == Model.SelectedApp);
}

删除Model.Apps.FirstOrDefault(x => x.ID == Model.SelectedApp)

之前的'@'

代码段或部分用法,例如:

@section{ 
    <!-- hiiii it's not about an error -->
}

从章节中的评论中删除撇号。

如果不是这些特定情况,您可以尝试通过应用源减少来查找生成错误的位置。删除/剪切/注释掉代码片段,直到您可以可靠地关闭和打开错误。如果不是上述情况之一,那么打开错误的代码可能是罪魁祸首。

答案 1 :(得分:2)

在标记(aspx或ascx)中查找以下块:

<% ... some C# code.... { %>

   markup(controls, html etc)

<% } %>

任何已打开的括号{都需要使用其他括号}关闭。

这些页面或控件在首次请求时由ASP .Net编译一次。 Visual Studio不会编译aspx or ascx个文件。
如果项目是“Web站点”类型,Visual Studio将编译aspx/ascx文件,但如果项目是“Web应用程序”类型,则Visual Studio不会“编译”标记(它不会生成相应的类aspx/ascx标记)

答案 2 :(得分:0)

在我的网站上,问题是由一块看起来像这样的代码引起的:

            @{  
                var currentNode = @linkedList.Find(@CurrentPage);
                if (@currentNode.Next != null)
                {
                    var next = @currentNode.Next;
                    <li>
                        @next.Name
                    </li>
                }
                if (@currentNode.Previous != null)
                {
                    var prev = @currentNode.Previous;
                    <li>
                        @prev.Name
                    </li>
                }
            }

我不确定为什么问题是由嵌套引起的。这可能是编译器中的错误。

答案 3 :(得分:0)

我遇到了类似的问题,只有在经过试验和错误记录后才能找到它。

我犯的错误是添加了一个&#39; @&#39;到foreach循环中的变量,它以:

开头
git log -1 HEAD

答案 4 :(得分:-1)

正如错误所示,你错过了一个结束大括号'}'

查看msdn编译器错误文档:

与MSDN上的示例一样:

// the below will cause CS1513 since namespace is missing '}'
namespace y    
{
   class x
   {
      public static void Main()
      {
      }
   }

答案 5 :(得分:-1)

尝试在visual studio中编译它。我认为它还将显示具有不完整花括号的代码的确切行。

编译错误cs1513