Ok, donc il apparaît dans la .NET framework API docs que la propriété CommandArgument de la classe CommandEventArg est de type « objet » suggérant que je pourrais lui confier autre chose qu'un objet chaîne mais je reçois un InvalidCastException utilisant le code ci-dessous:Comment utiliser un objet Command Command .NET en tant qu'objet non-chaîne?
[code ASPX]
...
<asp:Button ID="Button1" runat="server" CommandArgument='<%# context %>' oncommand='reviewContext' </asp:Button>
...
[aspx.cs code behind]
...
public Enum Context { C1, C2, C3 }
public Context context { get { return Context.C1; } }
...
public void reviewContext (object sender, CommandEventArg e) {
if((Context) e.CommandArgument == Context.C1) { /*Do something in context of C1 */}
}
Pourquoi est-il Tabu d'attribuer autre chose qu'une chaîne à la bonne CommandEventArg ty?
Merci Hogan, ça a du sens je pense ... que dire que le HTML servi doit inclure une sorte de texte à poster dans le cadre de la réponse du bouton? Donc je suppose que ma question est vraiment, "pourquoi l'API CommandEventArg dit-elle que ça peut être un objet?" – Travis
Parce que tous les objets doivent implémenter ToString() – Hogan
Oui, mais aussi toutes les chaînes :) alors pourquoi ne pas simplement définir CommandArgument comme un objet chaîne au lieu d'un objet générique si tous les gestionnaires d'événements doivent le traiter comme une chaîne ...? – Travis