我需要在经典的asp中使用类结构。我写了三节课。
Category.asp
<%
Class Category
Private NameVar
Public Property Get Name()
Name = NameVar
End Property
Public Property Let Name(nameParam)
NameVar = nameParam
End Property
End Class
%>
Item.asp
<%
Class Item
Private NameVar
Private CategoryVar
Public Property Get Name()
Name = NameVar
End Property
Public Property Let Name(nameParam)
NameVar = nameParam
End Property
Public Property Get Category()
category = categoryVar
End Property
Public Property Let Category(categoryParam)
CategoryVar = categoryParam
End Property
End Class
%>
TEST.ASP
<%
Dim CategoryVar
Set CategoryVar = New Category
CategoryVar.Name = "Weight"
Dim ItemVar
Set ItemVar = New Item
ItemVar.Name = "kg"
ItemVar.Category = CategoryVar
%>
<html>
<head>
<title>UoM Componet Testing</title>
</head>
<body>
<%= ItemVar.Name %><br/>
</body>
</html>
当我运行此代码时,我发现了一些问题。错误是:
Microsoft VBScript运行时(0x800A01B6)对象不支持此属性或方法:'CategoryVar'“。
怎么解释这个?请帮帮我。
答案 0 :(得分:8)
在VBScript中,如果您知道属性将包含对象引用,则必须使用Property Set
语句对其进行定义。此外,在为变量分配对象引用时,必须使用Set
语句。考虑到这一点,需要进行以下更改:
Item.asp
Class Item
'<snip>
Public Property Get Category()
' Add Set here
Set category = categoryVar
End Property
' Change "Property Let" to "Property Set"
Public Property Set Category(categoryParam)
Set CategoryVar = categoryParam
End Property
End Class
TEST.ASP
<%
' <snip>
ItemVar.Name = "kg"
Set ItemVar.Category = CategoryVar
%>
答案 1 :(得分:0)
我已经测试了上面的代码,虽然我收到了错误,但这不是你提到的那个。
首先,您要在Name
类中定义Item
两次,其中一个应为Item
。其次,您指定ItemVar.Category = CategoryVar
但Item
类没有Category
属性。
以下是我用来测试的代码,它运行正常:
<%
Class Category
Private NameVar
Public Property Get Name()
Name = NameVar
End Property
Public Property Let Name(nameParam)
NameVar = nameParam
End Property
End Class
Class Item
Private NameVar
Private ItemVar
Public Property Get Name()
Name = NameVar
End Property
Public Property Let Name(nameParam)
NameVar = nameParam
End Property
Public Property Get Item()
Item = ItemVar
End Property
Public Property Let Item(itemParam)
ItemVar = itemParam
End Property
End Class
Dim CategoryVar
Set CategoryVar = New Category
CategoryVar.Name = "Weight"
Dim ItemVar
Set ItemVar = New Item
ItemVar.Name = "kg"
'ItemVar.Category = CategoryVar ' There is no 'Category' property in your class
%>
<html>
<head>
<title>UoM Componet Testing</title>
</head>
<body>
<%= ItemVar.Name %><br/>
</body>
</html>
答案 2 :(得分:0)
我遇到了与Rory相同的问题,重新定义了名称,并且没有Category属性。
我已调整以下代码,以考虑编辑过的问题:
它不应该像下面那样吗?
Class Item
Private NameVar
Public Property Get Name()
Name = NameVar
End Property
Public Property Let Name(nameParam)
NameVar = nameParam
End Property
Private CategoryVar
Public Property Get Category()
Category = CategoryVar
End Property
Public Property Let Category(CategoryParam)
CategoryVar = CategoryParam
End Property
End Class
Dim CategoryVar
Set CategoryVar = New Category
CategoryVar.Name = "Weight"
Dim ItemVar
Set ItemVar = New Item
ItemVar.Name = "kg"
ItemVar.Category = CategoryVar.Name