无法从ASP调用ASP.NET返回一个可用的String []

时间:2010-09-13 19:44:55

标签: asp-classic

我绝对是在寻找这个,但我找不到答案,即使它看起来很琐碎。

我在ASP.NET中有一个返回字符串的变量。

string[] arrayOfThings { get { return new string[] { ... } } }

我在ASP中调用了它

Dim someString
For Each someString In someClass.arrayOfThings
    # Do Something with someString
Next

这不起作用。它返回'Type Mismatch'异常。

当我尝试调试时,IsArray(someClass.arrayOfThings)返回True,但它没有Count,没有属性,没有。 UBound(someClass.arrayOfThings)为0,这是我所期望的,因为它只有1个元素。但是,我无法通过someClass.arrayOfThings(0)

引用该元素

我是ASP的新手,但我无法弄清楚我做错了什么。我希望ASP是强类型的。

编辑:我尝试创建一个具有相同值的数组,并将其与我从arrayOfThings获得的数据进行比较,并且在调试器窗口中它们看起来相同,但在一种情况下我可以循环通过它而在另一种情况下,我不能

仅供参考,目前我的工作方式如下:

我在ASP.NET中有一个返回字符串的变量。

string arrayOfThings { get { return String.Join(",", new string[] { ... }) } }

然后在ASP中

Dim someString
For Each someString In Split(someClass.arrayOfThings, ",")
    # Do Something with someString
Next

这很有效。

1 个答案:

答案 0 :(得分:1)

请改用此方法: -

 object[] arrayOfThings { get { return new object[] { ... } } } 

使用字符串数组的问题在于它在COM中作为BSTR的SAFEARRAY进行编组说话。但是VBScript只能应付VARIANT的SAFEARRAY。使用对象应该产生一个Variant数组。