You have to use an <input type="file" id="file" runat="server"> and then create an HtmlInputFile object in your code behind that references your input box.
So:
HtmlInputFile = file
Be warned, while this will allow you to save files from a clients PC to the server, .NET does not effectively manage memory correctly when doing this. e.g. if you upload a 10MB file to the server, 10MB of memory will be consumed by the aspnet_wp.exe process on your server and, when the upload is complete, the process will only release a fraction of this memory.
What ends up happening is that if you have alot of uploads going on at one time you will cause the .NET worker process to recycle itself and it will cause your application to crash for a moment while the process restarts itself.
The work around to this is to use an HTTPHandler/HTTPModule that will stream the data straight to disk and bypass the worker process but this is a rather complex subject as you are actually working with RAW form POST data and RAW byte data from the uploaded file.
I wrote a module that does what your asking but before you ask me to share the code, go here and read this post IN ITS ENTIRETITY (173 replies) that I contributed to:
http://forums.asp.net/thread/55127.aspx
You should easily be able to create your own module after reading this thread.
--Stole this from a moderator
I will only tell you how to do it, not do it for you.
Unless, of course, you want to hire me to do work for you.