ASP.NET代码控制令人困惑

时间:2015-02-20 14:33:28

标签: asp.net vb.net

我在一个正在进行的项目中找到了这个:

 <% If Session("VALUE1") <> "" Then %>
    document.forms[0].action= "<%=Session("VALUE1")%>";
 <% Else %>
    document.forms[0].action="NewPage.aspx"
 <% End If %>

当我从顶行单步执行此操作时,代码会跳过If会话(&#34; VALUE1&#34;),同时也跳过Else。这怎么可能?

2 个答案:

答案 0 :(得分:5)

IfElse块中,没有实际的服务器代码,只有标记(恰好是javascript)。由于无法执行任何操作,因此您的调试器无需停止。所以它实际上并没有跳过它们。

如果您查看渲染的输出,其中一个将最终显示在页面上。

答案 1 :(得分:1)

代码不会被跳过,只是因为您没有看到实际执行的代码。

编译页面时为该标记生成的代码如下所示:

If Session("VALUE1") <> "" Then
  Response.Write("   document.forms[0].action= """)
  Response.Write(Session("VALUE1"))
  Response.Write(""";")
Else
  Response.Write("   document.forms[0].action=""NewPage.aspx""")
End If

由于Response.Write语句已生成且源代码中没有相应的语句,因此当您单步执行代码时,它们将被跳过。