【发布时间】:2021-11-26 18:23:29
【问题描述】:
我的项目中有以下用户控件:
标记 (SlidingScaleTableReadonly.ascx):
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="SlidingScaleTableReadonly.ascx.vb" Inherits="Client.Project.SlidingScaleTableReadonly" %>
<table class="table">
<thead>
<tr>
<th scope="col">Résultat glycémique</th>
<th scope="col">Unité à administrer</th>
</tr>
</thead>
<tbody>
<% For Each scaleEntry In ScaleEntries %>
<tr>
<td><%= scaleEntry.LowerValue %> - <%= scaleEntry.HigherValue %></td>
<td><%= scaleEntry.UnitToDeliver %></td>
</tr>
<% Next %>
</tbody>
</table>
代码(SlidingScaleTableReadonly.ascx.vb):
Public Class SlidingScaleTableReadonly
Inherits UserControl
Public ScaleEntries As List(Of ScaleEntry)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
End Class
SlidingScaleTableReadonly.ascx 的第 11 行出现以下错误:
BC30451 'scaleEntries' 未声明。由于其保护级别,它可能无法访问。
我认为这个编译器是错误的; scaleEntries 已定义并公开。那怎么了?
【问题讨论】:
-
即使声明了,根据代码我们可以看到该值仍然是NULL。
-
退出 vs,然后重新加载。现在为项目重新构建所有内容 - 这应该会使这些错误消失。通常有时它们仍然会显示,但如果您构建(或运行)项目,它们就会消失。我不能说何时/为什么会发生这种情况,但 VS OFTEN 将难以解决 HTML 标记中那些嵌入的服务器端表达式。
-
@JoelCoehoorn 这将是一个运行时问题(并在运行时解决)。此类错误不会出现在编辑中。
-
其实他们经常这样做! - 您在错误列表中看到编译错误。如上所述,重建通常会使错误消失。但是,我仍然认为那些服务器端的表达是不正确的。
标签: asp.net .net vb.net user-controls aspx-user-control