Je trouve des utilisations pour les deux modèles, mais j'ai tendance à essayer d'utiliser le balisage dans les pages aspx où je peux car il est plus facile à lire et m'aide à séparer mon code de vue de mon code logique. Les endroits où je crée des contrôles par programme et les lier à des données sont quand j'ai besoin d'un nombre dynamique de contrôles. Un bon exemple est peut-être lorsque vous générez un ensemble de menus déroulants dynamiquement des critères de recherche des utilisateurs - je ferais quelque chose comme ceci:
SqlDataReader dr;
// Set up database connection and set dr to search query.
while(dr.Read())
{
Literal name = new Literal();
name.Text = dr["Name"] + ": ";
Page.Controls.Add(name);
DropDownList ddl = new DropDownList();
ddl.ID = "Search_" + dr["ID"];
SqlDataReader dr2;
// Set up database connection and set dr2 to search items query.
while(dr2.Read())
{
ListItem li = new ListItem(dr2["Name"], dr2["Value"]);
ddl.Item.Add(li);
}
Page.Controls.Add(ddl);
}
Une autre chose à garder à l'esprit que vous pouvez créer des contrôles de balisage dans votre page aspx, puis les lier aux DataSets personnalisés que vous remplissez dans votre code-behind.