VB.net - 在WEB上下文中,如何访问循环按顺序命名的变量?

时间:2013-11-12 18:49:14

标签: vb.net variables loops

我试图访问VB.net中具有以下名称的一些变量的值:

<%@ Page Language="VB"%>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<%@ import Namespace="System.Collections.Generic" %>

<%
dim foo1 = "some value1"
dim foo2 = "some value2"
dim foo3 = "some value3"

'DO some stuff

%>

在php中我可以像这样在循环中访问这种类型的变量:

$foo1 ="some value1".<br/>
$foo2 ="some value2".<br/>
$foo3 ="some value3".<br/>

for($i=1;$i<=3;$i++){
   echo ${"foo".$i}
}

这将回应这样的事情:

some value1 
some value2 
some value3

我如何在VB.net中做同样的事情?

基本上,这就是我想做的事情:

我有一个用html和jquery编写的webform,他使用VB.net 4连接器(connector.aspx) 通过ajax从post中接收表单中的数据并将数据插入DB。

该表格可以同时签署20名参与者。

连接器必须准备好接收最多400个值,但不是所有时间都会收到它。

所以,在连接器的代码中,我使用这个tecnic来扫描Dim,看看谁收到了值或谁是空的。

4 个答案:

答案 0 :(得分:0)

您可以使用“For Each”循环。您需要先将值添加到集合中。一旦你在集合中拥有了所有的字符串变量,你的循环就会像这样。

For Each tempstring as string in mycollection

    Messagebox.show(tempstring)

Next

注意:tempstring是在创建“For Each”循环时声明的变量。它表示您正在循环的当前字符串。在这个例子中,tempstring在第一遍时是“some value1”,在第二遍时是“some value2”。

在这种情况下,输出将是3个带有每个字符串值的消息框。

答案 1 :(得分:0)

为什么不尝试使用字典?只需创建一个字典并将所需的任何数据放入其中。您可以通过传入作为第一个参数的Key来访问它,这将返回使用该键存储的值。

    Dim dict As New Dictionary(Of Integer, String)
    dict.Add(1, "some value1")
    dict.Add(2, "some value2")
    dict.Add(3, "some value3")

    For i As Integer = 1 To 3 Step 1
        If dict.ContainsKey(i) Then
            Dim result As String = dict(i)
            'Do whatever with result
            Debug.Print(result)
        End If
    Next

1返回“some value1”

2返回“some value2”

3返回“some value3”

答案 2 :(得分:0)

假设您实际使用的是ASP-classic和VBScript 1 ,则可以使用Eval()来执行此操作。

dim foo1, foo2, foo3
dim i, j
foo1 = "blah blah blah"
foo2 = "blibbety"
foo3 = "alohomora"
for i = 1 to 3
    j = "foo" & i
    response.write Eval(j) & "<br>"
next

(添加到词典也可以,但是开销要高得多。)

1您使用的dim foo = "blah"语法在VBScript中无效,并且您一直在接受显然不是用VBScript编写的答案,因此我不知道您实际使用的语言是什么英寸

答案 3 :(得分:0)

这是我最后所做的,基于@Gavin Perkins,@ Mike Monge和@varocarbas评论的答案。

Dim foo(3)

foo(1) = "some value1"
foo(2) = "some value2"
foo(3) = "some value3"

For i=1 to 3
    Response.Write(foo(i))
next

我从这个页面中提取示例:

http://p2p.wrox.com/classic-asp-basics/72328-dynamic-variable-names.html

您需要以某种方式将值和名称(键等)放在值集合上 (数组,列表,字典等), 就像@Gavin_Perkins和@Mike Monge一样回答,@ varocarbas评论; 并通过集合循环,而不是直接通过变量的名称。

如果你没有使用ASP-classic和VBScript,就像在PHP的例子中那样做不了,就像@Martha一样回答。