2009-09-29 5 views
1

Ne pouvez-vous pas avoir de blocs de code dans les balises de serveur? Par exemple, je souhaite créer des champs d'identification personnalisés à l'aide de blocs de code. (Je sais qu'il ya d'autres façon de le faire avec des répéteurs, mais dans ma situation, je voudrais faire les choses de cette façon, si son possible pour des raisons non pertinentes.)Blocs de code ASP.NET dans les balises de serveur

<% foreach(var reference in references) { %> 
... 
<asp:LinkButton runat="server" ID='lbUpdateEmail_<%=reference.ReferenceId%>' OnClick="lbUpdateEmail_Click" style="float:right;">Update Email</asp:LinkButton> 
... 
<% } %> 
+0

Quelle est la raison derrière la génération de l'ID de cette manière? un exemple spécifique de pourquoi vous le voudriez? – shahkalpesh

Répondre

3

Il n'est pas possible d'utiliser <%%> dans les balises de serveur.

Bien qu'ASP.NET semble très dynamique dans son comportement, vous devez vous rappeler que les pages sont réellement compilées aux classes .NET. Dans ce cas, la balise LinkButton que vous utilisez indique que vous voulez que votre classe de page contienne une occurrence de LinkButton, et l'ID vous donne le nom de la propriété que vous utiliserez pour y accéder au moment du design (quand vous êtes éditer votre code.)

Disons que dans votre code derrière vous vouliez désactiver le bouton de lien? Comment vous y référeriez si la pièce d'identité n'était pas encore déterminée? De plus, rappelez-vous que l '"ID" que vous définissez n'est pas le "id" qui est rendu en HTML - si c'était ce que vous cherchiez.

3

je vous recommande d'ajouter votre bouton lien au code derrière le programme à la place:

foreach(var reference in references) 
{ 
    LinkButton newLinkButton = new LinkButton(); 
    newLinkButton.Text = "Update Email"; 
    newLinkButton.Click += new EventHandler(a_lbUpdateEmail_Click); 
    myPlaceHolder.Controls.Add(newLinkButton); 
} 
+0

+1 pour une raison quelconque, cela semble être une réflexion originale – sshow

1

Je crois que si vous activez le mode de compatibilité classique ASP 3.0, vous pouvez le faire; Cela dit, je recommande vraiment de regarder dans une autre approche.

Questions connexes