【问题标题】:Check if Variable is declared in a page?检查变量是否在页面中声明?
【发布时间】:2012-01-01 09:33:12
【问题描述】:

我有一些网页包含其他页面,我需要检查页面中是否声明了变量(字符串)。

我一直在探索 try catch 和 finally,但我总是得到一个编译器错误,说变量没有退出。

我脑海中的语法是:

if variable(exists) then
do something
else
do nothing
end if

根据我的发现,如果变量没有在任何地方定义,这甚至不会编译。我有点知道,我只是希望能找到一些解决方法。 :/

【问题讨论】:

  • 你的意思是在VB.net中声明还是在网页中声明为javascript变量?
  • 为什么需要这样做? VB 在编译时是静态类型的。如果变量在您使用它的范围内不存在,编译器会告诉您(听起来确实如此)。究竟是什么问题? (您的问题暗示它与较早的问题有关。您应该只编辑该问题以添加上下文,还是这是一个新问题?如果这是新问题而不是原始问题的副本,我们也需要这里的上下文.)
  • 网站是用包含标题等构建的。在网站的特定部分,我定义了一个变量,因此我可以通过 SQL 动态加载页面。在每个页面上的标题中,如果该变量存在,我想动态更新某些内容。如果我能掌握这一问题就足够简单了。
  • @Anthem - 不要在 asp.net 中使用包含。这只是一个坏主意。改用母版页和构建自定义控件和用户控件。如果这是经典的 asp 而不是 asp.net,请使用 asp-classic 标签重新标记您的问题。

标签: asp.net vb.net error-handling


【解决方案1】:

我知道的唯一方法是使用反射...... 这不适用于子/函数中定义的变量...

Friend Function VariableExists(ByVal variableName As String) As Boolean
  For Each tField As FieldInfo In Me.GetType.GetFields
    If tField.Name.ToLower() = variableName.ToLower() Then
      Return True
    End If
  Next
  Return False
End Function

此处的 Cose 未经测试,可能包含小错误。把它想象成伪代码。

【讨论】:

  • 话虽如此...您声称该变量是页面级变量并通过包含文件定义...所以您已经知道该变量是否已定义,不是吗?除非仅在满足某些条件时才包含该文件...
  • 是的,我知道,问题是/是脚本没有。
  • 那么这应该让你的脚本知道。
【解决方案2】:

与其声明一个变量,不如添加一个简单的Interface,可以在需要特定方式处理的页面中使用,然后测试页面是否实现了该Interface?

例如:

Public Interface IMySpecialInterface
End Interface

在您想要特殊行为的页面中:

Public Page MySpecialPage
  Implements IMySpecialInterface
End Page

在处理页面的代码中:

If TypeOf Me.Page Is IMySpecialInterface Then

【讨论】:

    【解决方案3】:

    如何使用接口:

    Public Interface ISpecialProp
        Property SpecialProp() As String
    End Interface
    

    然后你可以测试,如果一个类实现了接口或不使用此代码:

    Dim spec = TryCast(obj, ISpecialProp)
    If spec IsNot Nothing Then
        Console.WriteLine(spec.SpecialProp)
    End If
    

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 2022-10-28
      • 2015-09-11
      • 1970-01-01
      • 2012-01-14
      • 2014-03-14
      相关资源
      最近更新 更多