Τα πράγματα είναι πολύ απλά και δεν χρειάζεται ιδιαίτερος κώδικας ή πείραγμα του web.config. Όσον αφορά τα tags, μέσα στο Visual Studio, πήγαινε πάνω σε ένα tag και πάτα το F1. Αν έχεις εγκαταστήσει το MSDN library θα σου δείξει κατευθείαν το help για το tag, αλλιώς θα φορτώσει την αντίστοιχη σελίδα από το http://msdn.microsoft.com. Και φυσικά, μπορείς να βρεις τα πάντα στο MSDN, και τα references και άρθρα. Ένα απλό search να κάνεις θα βρεις ό,τι θέλεις. Κι εμείς αυτό κάνουμε κάθε φορά που κάποιος ρωτάει κάτι. Έτσι θα μπορείς να καταλάβεις και τί σου απαντάει ο καθένας κάθε φορά και πως ταιριάζει με αυτά που προσπαθείς να κάνεις.
Όσον αφορά τα relative paths, οποιοδήποτε path δεν ξεκινάει με "http://" είναι relative. Όσα ξεκινάνε με "/" είναι είναι σε σχέση με το root folder του web site σου. Έτσι, το tag <img src="http://www.dotnetzone.gr/Images/SampleImage.jpg" /> αναφέρεται σε μία εικόνα η οποία βρίσκεται στο Images folder κάτω από το root του site σου.
Αν παραλείψεις το "/" το URL θα είναι σχετικό ως προς το folder της σελίδας στην οποία βρίσκεται. Το tag <img src="http://www.dotnetzone.gr/Images/SampleImage.jpg" /> αναφέρεται σε μία εικόνα η οποία βρίσκεται στο Images folder κάτω από το folder στο οποίο βρίσκεται η σελίδα σου. Οι δύο παραπάνω περιπτώσεις είναι απλή HTML και δουλεύουν ανεξάρτητα από το ASP.NET.
Τέλος, η μορφή <asp:image runat="server" id="Image1" ImageUrl="~/Images/SampleImage.jpg" /> δουλεύει με ψάχνει για το folder Images σε σχέση με το root του web application και όχι του site. Ο λόγος είναι ότι μπορείς να έχεις διαφορετικά web applications σε διαφορετικά folders. Αν χρειαστεί να μετακινήσεις το web application από ένα folder σε άλλο, ή από το μηχάνημα σου στον server παραγωγής, τα URL εξακολουθούν να δουλεύουν.
Ρίξε μία ματιά στο ASP.NET Web Site Paths για τους διάφορους τρόπους να γράψεις ένα relative path και τί σημαίνει ο καθένας.
Όποια μορφή και να χρησιμοποιήσεις, θα δουλέψει χωρίς τροποποιήσεις στο web.config και χωρίς να μετατρέψεις το path σε κάτι άλλο. Απλά, φρόντισε το path στο οποίο φορτώνεις τα αρχεία σου να είναι κάτω από το root της εφαρμογής σου και αποθήκευσε το relative path στη βάση. Αν μάλιστα χρησιμοποιείς ένα gridview, listiview ή κάποιο άλλο control το οποίο επιτρέπει data binding, μπορείς να χρησιμοποιήσεις την Eval() για να περάσεις το URL από το DataSet απευθείας στο control, π.χ. <asp:image runat="server" ImageUrl="<%# Eval("MyUrlField") #%>" />.
Και πριν ρωτήσεις τί είναι το data binding, διάβασε στο documentation το "Binding to Databases".
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos