2011-03-02 117 views
1

我正在将一堆foxweb程序转换为asp.net。我在asp代码中调用的一些函数使用“外部函数”,我的意思是我在.vb文件中定义的函数。例如,FileExists()是一个很好的函数,我想把它引入一个叫做clsCommon.vb的常用函数中。ASP.NET visual basic未定义函数

我已经实现了它这样的:

Option Explicit On 
Option Strict On 

Imports System 
Imports System.Web.UI 
Imports System.Web.UI.Page 

Public Class clsCommon 
    Inherits Page 

    Public Shared Function FileExists(ByVal filename As String) As Boolean 
     If Dir$(filename) <> "" Then 
      Return True 
     Else 
      Return False 
     End If 
    End Function 

End Class 

我一直在使用这两种DIR $()和DIR()尝试。在每种情况下,网页上返回的错误为:

编译器错误消息:BC30451:名称'Dir'未声明。

正如我写我调用FILEEXISTS()这样的其他功能:

<%@ page Debug="true" inherits="clsCommon" src="clsCommon.vb" %> 
<% 

Dim filename as String = "example.txt" 

If clsCommon.FileExists(filename) then 
    Response.Write(filename & " Exists") 
else 
    Response.Write(filename & " does not Exist") 
end if 

%> 

注1:虽然我想解决这个具体的问题,就是我真正需要的是一般的方法来获得像我在VB中依赖的DIR(),CHR()等函数。注意2:asp似乎只查看vb文本文件 - 而不是在编译后的dll文件中,所以我不认为我使用的引用对它有任何影响。

任何人都能看到我失踪的东西吗?

+1

您应该调用内置的'File.Exists'方法。 – SLaks 2011-03-02 22:40:23

回答

3

TheGeekYouNeed肯定是对的。最好的办法是要么保持你的代码在VB中(如果它没有损坏,不要修复它)或考虑投入一些时间在学习.Net

我见过用于将VB代码转换为VB的代码转换工具。净。但我无法想象他们为不平凡的项目工作。同样,您可以尽可能让自己的代码尽可能保持为'VB',但我认为这就像烧毁你的房子以避免不必扫地。

无论如何,DIR函数仍然存在于Microsoft.VisualBasic命名空间中。 http://msdn.microsoft.com/en-us/library/dk008ty4(v=vs.71).aspx

更普遍接受的.NET这样做的方式是使用File.Exists http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

+0

只要添加以下行,File.Exists就可以工作:将System.IO导入到vb代码的imports部分。 – elbillaf 2011-03-03 20:29:38

+0

此外,要使用CHR()函数,我需要添加以下行:Imports Microsoft.VisualBasic – elbillaf 2011-03-03 21:13:41

1

您正在使用VB.Net ...不是VB。有差异,您需要适当地使用.Net框架。

编程总是一个学习的教训。

0

解决方法:找出我需要什么功能/法&寻找它在MSDN上 当我发现功能如: http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.strings.chr.aspx 会有这样一行,例如,

命名空间: Microsoft.VisualBasic程序

使用与“进口”附近的VB文件的开头,类定义之前命名如下:

Option Explicit On 
Option Strict On 

Imports System 
Imports System.Web.UI 
Imports System.Web.UI.Page 

' The two critical lines follow: 
Imports System.IO 
Imports Microsoft.VisualBasic 

Public Class clsCommon 
    Inherits Page 

    Public Shared Sub TestExistence(ByVal filename As String) 
     if NOT File.Exists(filename) then 
      ' ... do something. 
     end if 
    End Sub 

    Public Shared Function TestCHR(ByVal str As String) as string 
     return str & chr(13) & chr(10) 'just an example 
    End Function 

End Class 

的MicroSoft。CHR()函数 需要VisualBasic,并且File.Exists()函数需要System.IO。

+0

导入并不是真的需要。很高兴有。没有它,只要你完全限定名字空间,你仍然可以调用相同的函数。 – 2011-03-03 21:29:38