In some of the sites I develop, I use the BASE HREF tag. Unfortunately, doing this poses problems when you’re using Web forms in ASP.Net if your Web form is in a directory below the root directory.
If I create a page using Web forms in a subdirectory – as in http://somehostname/subfolder/webform.aspx – the FORM ACTION property of the form will point to http://somehostname/webform.aspx. Note how subfolder disappeared. This happens because of the BASE HREF tag. ASP.Net Web forms create the FORM ACTION without any reference to the physical path of the file – something that is not a problem unless you’re using BASE HREF.
Unfortunately, in a server-side FORM tag, you can not specify the ACTION property. But you can use JavaScript to change it. So, on each Web page where I need to adjust the FORM ACTION of a server-side ASP.Net Web form, I do something like this:
<!--
document.webForm.action = 'subfolder/' + document.webForm.action;
//-->
I use JavaScript to compile the complete path to the form, which includes the base URL (which I store in Application["basehref"]) followed by the subfolder (which I must type explicitly) followed by the current form action (which is taken dynamically within JavaScript). In four simple lines, I work around an ASP.Net shortcoming and continue to allow myself the benefit of using the BASE HREF tag!
Leave a comment