Ce point a maintenant été éclairci par mon MS. Le problème que j'ai découvert était dû au fait que l'attribut "action" dans les formulaires du serveur n'avait aucun effet avant .NET 2 SP2, mais qu'il peut maintenant être défini. Les blocs de rendu de code n'ont jamais fonctionné dans les valeurs d'attribut - ceci est expliqué vers la fin de cet article.
Il s'agit d'une conséquence d'un changement délibéré de comportement introduit dans Microsoft .NET Framework 3.5 SP1. Avant ce Service Pack, les attributs action et method des balises FORM côté serveur ne pouvaient pas être remplacés. S'ils étaient spécifiés, ils étaient remplacés par ASP.NET par "POST" et "page name".
Auparavant, l'analyseur de pages ASP.NET n'empêchait pas de spécifier ces attributs, bien que la documentation le déconseille pour l'attribut action : http://msdn.microsoft.com/en-us/library/k33801s3.aspx
En particulier le commentaire (dans le contexte de l'élément FORM) :
- " La balise d'ouverture ne doit pas contenir d'attribut d'action. ASP.NET définit ces attributs de manière dynamique lors du traitement de la page, remplaçant ainsi tout paramètre que vous pourriez définir. "
Le problème signalé à l'origine par Josh, où le bloc de code n'était pas interprété, n'est pas un nouveau comportement mais un bogue connu - les blocs de rendu de code ne peuvent pas être utilisés dans les attributs de contrôle du serveur. Ce problème est signalé comme un bogue "Connect" : http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=109257 qui contient les éléments suivants : " Les attributs des contrôles de serveur ne peuvent pas prendre une expression en ligne comme valeur. Ceci explique le comportement inattendu tel que vu avec : " <link href="<%=RootPath %> ..." Cependant, le code inline peut être utilisé pour les valeurs des attributs. "