Το runat="server" δηλώνει πως το συγκεκριμένο control θα είναι προσβάσιμο στο code behind, δηλαδή στο κομμάτι της εφαρμογής που εκτελείται στον server (θα είναι δηλωμένο δηλαδή ως property της κλάσης της σελίδας (.aspx) σου ή του user control (.ascx) σου). Στα asp controls (π.χ. Literal, Hyperlink, Button, κτλ) είναι υποχρεωτική η χρήση του ενώ στα html elements (div, table, span, κτλ) όχι. Το runat="server" πρέπει να συνοδεύεται πάντα με ένα ID="...".
Έστω για παράδειγμα:
<asp:Button ID="SubmitButton" runat="server" Text="Submit"></asp:Button>
Αυτό σημαίνει πως στο code behind έχεις πρόσβαση στο Button αυτό με το όνομα SubmitButton.
Μπορείς να το χρησιμοποιήσεις επίσης (προαιρετικά) και σε html tags, π.χ.
<div id="MainDiv" runat="server"> .... </div>
Αυτό σημαίνει πως στο code behind έχεις πρόσβαση στο div αυτό με το όνομα MainDiv.
Τάσος Καραγιάννης
Baby debugging steps...