你好,这真的很奇怪!
但看看下面的asp代码:
<div runat="server" id="MainDiv">
<%foreach (string str in new string[]{"First#", "Second#"})
{ %>
<div id="<%=str.Replace("#","div") %>">
</div>
<%} %>
</div>
现在,如果您将此代码放入任何网页中(不必担心该代码的道德问题,我只是为了展示这个想法而编写它),您将会得到以下错误信息:
编译器错误消息:CS1518:预期类、委托、枚举、接口或结构体。
当然,这个错误与实际问题无关。我搜索了由asp.net生成的代码并找出了以下内容:
private void @__RenderMainDiv(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer)
{
@__w.Write("\r\n ");
#line 20 "blabla\blabla\Default.aspx"
foreach (string str in new string[] { "First#", "Second#" })
{
#line default
#line hidden
@__w.Write("\r\n <div id=\"");
#line 22 "blabla\blabla\Default.aspx"
@__w.Write(str.Replace("#", "div"));
#line default
#line hidden
@__w.Write("\">\r\n ");
}
这是从asp页面生成的代码,这是用于渲染我们div (MainDiv) 的方法,我发现缺少了一个花括号“}”,它关闭了方法或(for循环)。
现在问题有三个部分: 1- 首先,您应该拥有一个服务器控件(在我们的情况下是MainDiv),我不确定它是否仅为div标记。 2- 服务器控件内的HTML控件和其中的代码使用双引号(例如
< div id="<%=str
而不是<div id='<%=str
。
3-任何具有块括号的关键字,例如:for{},while{},using{}...等。现在删除任何部分都将解决问题!!!
这是如何发生的?? 有什么想法吗?
顺便说一句:请帮助我使问题更加明显,因为我找不到最好的词来描述这个问题。
看起来我的问题不够清楚!! 我的问题是:asp.net遵循哪些步骤生成这样错误的代码?? 怎么发生的? 我不想要异常的解决方案,我已经使用单引号解决了它。