You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET UserControl公共变量已声明 标记报未定义错误该如何解决

问题原因及解决方法

常见触发原因

  • 公共字段无法被模板引擎识别:ASP.NET Web Forms的ASCX模板引擎默认仅支持访问公共属性,你代码里把ScaleEntries声明为公共字段(Field),没有封装为属性,会导致模板无法识别。
  • ScaleEntry类的访问级别不足:如果ScaleEntry类没有声明为Public,就算ScaleEntries本身是公共的,也会因为元素类型不可访问触发编译错误。
  • 项目类型与CodeBehind属性不匹配:如果你用的是Web Site项目而非Web Application项目,需要把ASCX头部的CodeBehind属性改为CodeFile,否则模板无法正确关联后置代码的成员。
  • 命名空间不匹配:检查后置代码的类所在的命名空间是否和ASCX头部Inherits属性的值Client.Project.SlidingScaleTableReadonly完全一致,VB虽然不区分大小写,但编译时会校验完全匹配。

具体修复步骤

  1. 首先把后置代码里的公共字段改为自动属性,同时初始化避免空引用:
Public Class SlidingScaleTableReadonly
    Inherits UserControl

    ' 改为公共属性,初始化空列表避免空引用异常
    Public Property ScaleEntries As New List(Of ScaleEntry)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

End Class
  1. 确认ScaleEntry类的声明为公共级别:
Public Class ScaleEntry
    ' 你的属性声明示例
    Public Property LowerValue As Decimal
    Public Property HigherValue As Decimal
    Public Property UnitToDeliver As Integer
End Class
  1. 如果是Web Site项目,修改ASCX头部的属性:
    把CodeBehind="SlidingScaleTableReadonly.ascx.vb"改为CodeFile="SlidingScaleTableReadonly.ascx.vb"
  2. 清理解决方案后重新编译即可解决报错。

内容的提问来源于stack exchange,提问作者B. Bergeron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:30:02