I will submit the idea that the hidden system folder /Forms/ is a great place for these for four simple reasons:
- Easy to find – Yes, I get lost on my own sites. Don’t you? Having the resources nearby makes management a breeze.
- Relative URL hyperlinks – No need for server relative or hardcoded URL reference. From DispForm.aspx (for example) just call “resource_file.ext”
- Protected from end users – They can’t delete what they can’t see. Enough said.
- Bundled as .STP for list templates – When you save any SPList as STP it will automatically package up the entire contents of the /Forms/ folder. How cool is that!?! So easy to migrate, duplicate, and even control source version history by saving often. This alone is reason to use this technique.
So the next time you’re adding custom files to a particular list please give the /Forms/ folder a second look.