How to call a Sub function from .ASPX file ?

B

bienwell

Hi,

I have a question about file included in ASP.NET. I have a file that
includes all the Sub functions (e.g FileFunct.vb). One of the functions
in this file is :

Sub TestFunct(ByVal strInput As String)
return (strInput & " test")
End Sub


I'd like to call this function in FileFunct.vb from another .ASPX file
like this :

<%@ import Namespace="System" %>
<%@ import Namespace="System.Data" %>

<html>
<head>
<title>Test page</title>
</head>

<body>
<script runat="server" language="VB" scr="FileFunct.vb" >

Sub Page_Load(s As Object, e As EventArgs)
Dim result=TestFunct("This is a string")
response.write("<BR>result ==> " & result)
End Sub
</script>
</body>
</html>

I've got this error:

Server Error in '/' Application.
----------------------------------------------------------------------------
----

Compilation Error
Description: An error occurred during the compilation of a resource required
to service this request. Please review the following specific error details
and modify your source code appropriately.

Compiler Error Message: BC30451: Name 'TestFunct' is not declared.

Source Error:


Line 18: Sub Page_Load(s As Object, e As EventArgs)
Line 19:
Line 20: Dim result=TestFunct("This is a string")
Line 21: response.write("<BR>Result ==> " & Result)
Line 22:


I have a single .ASPX file and I don't use Visual studio. NET in this case.
Can I do that ?

Thanks in advance.
 
K

Karl Seguin

Make TestFunc shared and access it via

ClassName.TextFunc

so, it would look like

public class Utility
public shared TestFunct(..)
...
end function
end class

and you would use it like:

Utility.TestFunct(...)

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/ - New and Improved (yes, the popup is
annoying)
http://www.openmymind.net/faq.aspx - unofficial newsgroup FAQ (more to
come!)
 
K

Kevin Spencer

You're not thinking fourth-dimensionally! (- Back to the Future)

Actually, you're not thinking Object-Orientationally.

ASP.Net is object-oriented, and you'd better get acquainted with it, or
you'll be visiting here almost daily, and writing crappy code until you do.
Let me elaborate, if you will:

Files are source code. Your application doesn't have files. It has classes.
A file defines a class, but IS not a class. A class is a data type, and
exists in the context of a running application. So, when you're talking
about how your application works, the first thing you need to do is think
about classes, not files. A file can contain one or MORE class definitions,
and you need to get acquainted with classes to be successful with .Net.

Classes are very important in .Net programming; Objects are made from
classes, and classes provide encapsulation. Object-oriented programming can
get pretty darned complex, and encapsulation can save you a lot of grief, by
hiding those things which need hiding from those things that don't need
them.

If you have a file with a bunch of Subs and Functions in it, you need to
create a class with Subs and Functions in it. These Subs and Functions can
be Shared (meaning that they are singleton objects that don't require a
class instance to operate), or they can be Instance (meaning that an
instance of the class containing them must be created in order to use them).
The advantage to Shared data and process is that it doesn't require a class
instance, and is, in essence "global," available to the entire application.
This is also the disadvantage of Shared data and process. Anything can get
to it, and change it, and in a multi-threaded app (unlike VB 6, .net is
multi-threaded), this can cause all sorts of problems. Unless you're
familiar with the issues, I would stick with classes that require
instantiation. Instantiation is the process of creating a copy (instance) of
a class that is limited in its scope (availability), and is thread-safe.

Once you create an instance of a class, you can access any Public or Friend
(Friend is more protected than Public, but you shouldn't run into issues
right away) members from any other class that references the instance.

From your question, and the code you posted, I can see that you require a
good bit more education and practice. I would recommend the .Net SDK, a free
download from:

http://www.microsoft.com/downloads/...A6-3647-4070-9F41-A333C6B9181D&displaylang=en

It is extremely important to know the difference between ASP and ASP.Net,
between VBScript or VB 6, and VB.Net. The first are procedural,
single-threaded, and easy to use for small applications. .Net is
object-oriented, multi-threaded, and easy to use once you spend a great deal
of time studying it, but incredibly hard to use if you don't.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Everybody picks their nose,
But some people are better at hiding it.
 
B

bienwell

Kevin,

Last time I put all the files in my application (project name) using Visual
Studio.NET, declared a class (AClass) which has some functions, and saved
them in a file (.vb file). My program worked fine when I called the function
from my other .vb files (AClass.Function1, ...). My application was
Object-Oriented well development. Now, I'd like to try another way :
creating .ASPX file that contains VB.NET script, HTML and call one function
from another .vb file without using Visual Studio.NET. Can I do that and How
? It's my question.
 
B

bienwell

Karl,

I've tried it like this:

(In Function.vb file)
Public Class EFiling_Funct
Public Shared Function TestFunct(ByVal strInput As String)
return (strInput & " test")
End Function
End Class

================================================
(in File1.ASPX file)

<%@ import Namespace="System" %>
<%@ import Namespace="System.Data" %>
<html>
<head>
<title>Untitled</title>

</head>

<body>
<script runat="server" language="VB" >

Sub Page_Load(s As Object, e As EventArgs)

Dim result=EFiling_Funct.TestFunct("This is a string")
response.write("<BR>Result ==> " & Result)

End Sub
</script>

</body>
</html>
and received this error message :

Server Error in '/' Application.
----------------------------------------------------------------------------
----

Compilation Error
Description: An error occurred during the compilation of a resource required
to service this request. Please review the following specific error details
and modify your source code appropriately.

Compiler Error Message: BC30451: Name 'EFiling_Funct' is not declared.

Source Error:



Line 18: Sub Page_Load(s As Object, e As EventArgs)
Line 19:
Line 20: Dim result=EFiling_Funct.TestFunct("This is a string")
Line 21: response.write("<BR>Result ==> " & Result)
Line 22:
 
K

Kevin Spencer

Sorry dude, it may be all YOU need, but my requirements go a good bit
farther.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Everybody picks their nose,
But some people are better at hiding it.
 
K

Kevin Spencer

I'm afraid anything but Best Practices is outside of my purview.

--
HTH,

Kevin Spencer
Microsoft MVP
..Net Developer
Everybody picks their nose,
But some people are better at hiding it.
 
B

bienwell

Thanks, Tom. I did try it last time and it worked when I put all the files
in an application using Visual Studio.NET. My requirement now is to create
a single .ASPX file containing VB.NET language, JavaScript language and
HTML, and call a function from this .ASPX file without using Visual
Studio.NET to create an application.

..
 
T

tom pester

If you use asp.net version 1 you need to compile the class file with the
command line compiler and put the created dll in the bin directory.
Check out this 2 part article :

http://www.4guysfromrolla.com/webtech/112101-1.2.shtml

If you use asp.net version 2 just drop the class files in the App_Code and
that's it. The engine will compile all files in this dir and make it available
to the whole app without us to worry about compilation

Let me know if it helped you or not...

Cheers,
Tom Pester
 
B

bienwell

Thanks a lot, Tom. It worked fine now.

tom pester said:
If you use asp.net version 1 you need to compile the class file with the
command line compiler and put the created dll in the bin directory.
Check out this 2 part article :

http://www.4guysfromrolla.com/webtech/112101-1.2.shtml

If you use asp.net version 2 just drop the class files in the App_Code and
that's it. The engine will compile all files in this dir and make it available
to the whole app without us to worry about compilation

Let me know if it helped you or not...

Cheers,
Tom Pester
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top