When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips

Sections:
Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
XML Info
Information:
Feedback
Author an Article
ASP ASP.NET ASP FAQs Message Board Feedback

The 4 Guys Present: ASPFAQs.com

Jump to a FAQ
Enter FAQ #:
..or see our 10 Most Viewed FAQs.

4GuysFromRolla.com : ASP FAQS : The Nature of Things


Question:

How can I conditionally #include files? How can I tell if a file is already #included so I won't include it again? How do #include files work?


[Print this FAQ]

Answer: Please understand this: ASP does not control the #include-ing of files!

All processing of #include files is done by the web server before ASP ever gets to see the code! So ASP always sees the full text after all the includes take place!

Yes, you can code things like

    <% If Bill = Silly Then %>
    <!-- #include file="silly.inc" -->
    <% End If %>


But the contents of that include file will always be included! Period. Always.

If you don't believe all the above, here is a way to prove it.

(1) Create the file "junk.inc" and put it in an appropriate virtual directory on your site. The contents of "junk.inc" should be:

<%
Dim foo
foo = 7
%>


(2) Create the file "junk.asp" and put it in the same directory. The contents of "junk.asp" should be:

<% Option Explicit %>
<%
Dim foo, bar
%>

<HTML><BODY>
<% If 3 = 2 Then %>
<!-- #include file="junk.inc" -->
<% End If %>
</BODY></HTML>


(3) Navigate to "junk.asp" and invoke the page. What do you see?
On my site, I see this:

Microsoft VBScript compilation error '800a0411'

Name redefined

/Testing/junk.inc, line 2

Dim foo
----^


Do you understand why? I used <% Option Explicit %>, so trying to Dim a variable that has already been Dimmed is considered an error.

And even though the code in that include file will not be executed (because obviously the condition 3 = 2 is false!), we still get a compilation error from VBScript when it encounters that extraneous Dim.

But if the file had not been included, we would never have see the compilation error, would we have?

Get the point: The file was included even though the if statement would make it look like it wasn't.

Okay? Clear? Understandable? Final word on the subject? (Also be sure to read: The Low-down on #include!)


FAQ posted by Bill Wilkinson at 10/16/2000 4:39:12 PM to the The Nature of Things category. This FAQ has been viewed 53,350 times.

Do you have a FAQ you'd like to suggest? Suggestions? Comments? If so, send it in! Also, if you'd like to be a FAQ Admin (creating/editing FAQs), let me know! If you are looking for other FAQs, be sure to check out the 4Guys FAQ and Commonly Asked Messageboard Questions!

Most Viewed FAQs:

1.) How can I format numbers and date/times using ASP.NET? For example, I want to format a number as a currency. (761643 views)
2.) I am using Access and getting a 80004005 error (or a [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)' error) when trying to open a connection! How can I fix this problem? (207777 views)
3.) How can I convert a Recordset into an array? Also, how can I convert an array into a Recordset? (202549 views)
4.) How can I quickly sort a VBScript array? (196039 views)
5.) How can I find out if a record already exists in a database? If it doesn't, I want to add it. (156019 views)
6.) How do I display data on a web page using arrays instead of Do...While...MoveNext...???... (152331 views)
7.) When I get a list of all files in a directory via the FileSystemObject, they aren't ordered in any reasonable way. How can I sort the files by name? Or by size? Or by date created? Or... (140381 views)
8.) For session variables to work, must the Web visitor have cookies enabled? (110162 views)
9.) Can I send emails without using CDONTS? (107083 views)
10.) How can I take the result of a SELECT...MULTIPLE or a group of same-named checkboxes and turn it into a query? That is, if the user selects 3 answers, how can I construct a query that looks for all 3? (106308 views)
Last computed at 9/17/2007 3:22:00 AM


ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article