【问题标题】:Access constant from code behind in UserControl ASCX来自 UserControl ASCX 中代码后面的访问常量
【发布时间】:2015-04-03 04:29:31
【问题描述】:

我有以下 UserControl ASCX:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="TestUC.ascx.vb" Inherits="Common.DataQuery.TestUC" %>

<script>
    function fcTest() {
        alert('<%=lblTest.ClientID%>');
    }
</script>

<asp:Label runat="server" ID="lblTest" Text="test" />
Testing constant: <%=MAXT%>
End of test

还有 ASCX.VB:

Namespace DataQuery

    Public Class TestUC
        Inherits System.Web.UI.UserControl

        Public Const MAXT = 10


        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            lblTest.Text = " dd"
        End Sub

    End Class
End Namespace

目前&lt;%=MAXT%&gt; 语句出现错误,说它没有定义。 为什么?

【问题讨论】:

  • 你有想过这个吗?我遇到了同样的问题。我确实添加了一个新的默认 ascx 页面,并添加了一个公共属性 IsTest 作为 Bool,我无法从 ascx 中查看。我不明白为什么

标签: asp.net vb.net webusercontrol web-application-project


【解决方案1】:

那是因为命名空间。删除开始命名空间和结束命名空间并尝试。它会起作用的。如果您仍然需要提供命名空间,请参阅这篇文章如何指定一个 - How to specify a namespace for an ASP.net UserControl?

【讨论】:

  • 我关注了这篇文章,它可以工作但无法访问常量。
  • 我相信这是因为你的 .ascx 说 Inherits="Common.DataQuery.TestUC" 而你的代码隐藏说 Namespace DataQuery。他们都应该是一致的。否则,代码可能甚至无法编译。
  • 我创建了一个新的 Web 用户控件(使用默认设置,没有明确的命名空间等)。添加常量并尝试在 ASCX 上使用它。不行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
相关资源
最近更新 更多