world tutorial switch programacion lenguaje hello example classic asp asp-classic

asp classic - tutorial - Estructura de clase en asp clásico



hello world asp classic (3)

Necesito usar la estructura de clase en asp clásico. He escrito siguientes tres clases.

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>

Cuando ejecuto este código, he encontrado algún problema. El error es:

Microsoft VBScript runtime (0x800A01B6) El objeto no admite esta propiedad o método: ''CategoryVar'' ".

¿Cómo puede explicar esto? Por favor, ayúdame.


En VBScript, si sabe que una propiedad contendrá una referencia de objeto, debe definirla utilizando la instrucción de Property Set . Además, debe usar la instrucción Set al asignar referencias de objeto a variables. Con eso en mente, los siguientes cambios deben hacerse:

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 %>


Encontré los mismos problemas que Rory, la redefinición del nombre y la ausencia de una propiedad de categoría.

He ajustado el código a continuación para tener en cuenta la pregunta editada:

¿No debería ser algo como abajo?

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


Probé tu código anterior y, aunque recibí un error, no es el que mencionaste.

En primer lugar, está definiendo Name dos veces en la clase Item , uno debe ser Item . En segundo lugar, asigna ItemVar.Category = CategoryVar pero la clase Item no tiene ninguna propiedad de Category .

Aquí está el código que usé para probar y funciona bien:

<% 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>