2013-06-02 32 views
0

我正在使用下面的代码尝试写出我的服务器根目录的images目录中的所有文件......但是我很失败,无法让它工作有些,天知道为什么会这样。VB.NET - 声明预期的编译错误

这里是我迄今为止代码...

<%@ Import Namespace="System.IO" %> 
<script language="vb" runat="server" explicit="true" strict="true"> 
Dim position As Integer 

Public Sub GetFiles(ByVal path As String) 
    If File.Exists(path) Then 
     ' This path is a file 
     ProcessFile(path) 
    ElseIf Directory.Exists(path) Then 
     ' This path is a directory 
     ProcessDirectory(path) 
    End If 
End Sub 

' Process all files in the directory passed in, recurse on any directories 
' that are found, and process the files they contain. 
Public Sub ProcessDirectory(ByVal targetDirectory As String) 
    ' Process the list of files found in the directory. 
    Dim fileEntries As String() = Directory.GetFiles(targetDirectory) 
    For Each fileName As String In fileEntries 
     ProcessFile(fileName) 
    Next 

    ' Recurse into subdirectories of this directory. 
    Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory) 
    For Each subdirectory As String In subdirectoryEntries 
     ProcessDirectory(subdirectory) 
    Next 
End Sub 

' Insert logic for processing found files here. 
Public Sub ProcessFile(ByVal path As String) 
    Dim fi As New FileInfo(path) 
    Response.Write("File Number " + position.ToString() + ". Path: " + path + " <br />") 
    position += 1 
End Sub 

GetFiles("\images\") 

</script> 

我得到了下面的代码行宣言预计编译错误:

GetFiles("\images\") 

有什么我需要声明这里?我只是扯掉我的头发,并在这一个秃头... arggg!

+0

我怀疑它不喜欢你的字符串中额外的'\'。 – tinstaafl

回答

1

内联脚本(意思是.aspx标记的一部分,而不是代码后面)只能包含方法,而不能包含命令。

虽然在文档中没有明确提到,但命名Code Declaration Blocks暗示它仅用于声明的代码。你可以在其他地方或事件中调用该代码。

所以,你必须把你想在页面事件执行的命令,你的情况Page_Load中看起来最恰当不过了:

Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs) 
    GetFiles("\images\") 
End Sub 

如果你想这是标记本身,那么你可以使用<% ... %>符号的一部分而不是把它放在<script>将会失败的标签:

<!-- markup here --> 
<!-- .... --> 
<% GetFiles("\images\") %> 
+0

除了我想在.aspx文件中调用GetFiles()函数,通过if语句确定'<%If Request.ServerVariables(“QUERY_STRING”)=“id = 6566”然后%>'我需要这将被输入到已经在页面上的HTML ... –

+0

好吧,看看我的编辑。 –

+0

谢谢,这工作完美!真棒! –