我试图通过下面的方法在 body 标记之后声明一个字符串变量,并在 div 标记内显示 name 变量的值。但是为什么我们不能访问声明的脚本标记之外的变量
<%CODE%>
?
换句话说,如果我在 HTML 代码中的某处声明了一个变量名 作为
<% string name="Stark"; %>
并尝试使用下面的代码在代码中的某个位置访问它 <div><%=name;%></div>
...
然后它提示我
当前上下文中不存在
<VARIABLE NAME>
ASP.NET MVC
@{
string name = "Stark";
}
<div>
<h2>@name</h2>
</div>
ASP.NET Web 表单
<% string name = "Stark"; %>
<div>
<h2><%=name %></h2>
</div>
<%= %>
语法打印表达式。
不需要完整的声明(
name;
作为声明没有任何意义,打印声明也没有意义)。
因此,不能有分号。
对于 Web 窗体,ASP.NET 通过变量所在的标签分隔变量上下文。有时,您需要在与正在使用的调用 (
<%= %>
) 相同的标签内设置变量,以便 ASP.NET 对其进行编译.
所以...
<label> <!-- scope -->
<% %>
<%= %>
<\label>
而不是...
<% %>
<label> <!-- scope -->
<%= %>
<\label>
当您在 Web 表单中使用
if
/for
/foreach
代码块时,就会出现差异。 HTML 和 C# 周围的范围允许 C# 而不是 HTML 成为焦点。
这很可能是一个基于 ASP.NET Web 窗体处理 HTML 中变量的方式的范围问题。