2010-10-19 18 views
3

J'essaie de faire ce que je pensais être une opération très simple pour définir une propriété sur un contrôle LinkButton ASP.Net mais pour une raison quelconque, ASP.Net ignore les balises et passe juste à travers la valeur comme une chaîne.ASP.Net propriété LinkButton CommandArgument ignore <%= .. %>

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument="<%= item.ItemID %>" /> 

Lorsque le lien est cliqué je manipuler avec:

protected void btnDetails_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      LinkButton btn = (LinkButton)sender; 
      if (btn.CommandName == "ItemID") 
      { 
       string itemID = btn.CommandArgument.ToString();    
      } 
     } 
     catch (Exception excp) 
     { 
      lblError.ForeColor = System.Drawing.Color.Red; 
      lblError.Text = excp.Message; 
     } 
    } 

Le problème est itemID se retrouve avec une valeur de "<% = item.ItemID%>".

J'ai vu d'autres personnes rencontrer le même problème et essayer des choses comme ci-dessous mais aucun n'a travaillé pour moi jusqu'à présent.

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument=<%= item.ItemID %> /> 

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument="<%# item.ItemID %>" /> 
+0

Vous voudrez peut-être clarifier ce que "aucun n'a travaillé pour moi jusqu'à maintenant" signifie – Onkelborg

+0

Aucun des exemples montrés dans la question n'a abouti au code out désiré du CommandArgument contenant la valeur de item.ItemID plutôt que la chaîne " <% = item.ItemID%> ". – sipwiz

+0

Même le dernier exemple? Vous obtenez, littéralement, <% # item.ItemID%>? – Onkelborg

Répondre

1

Cela devrait fonctionner:

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument="<%# item.ItemID %>" /> 

Avez-vous appelé .DataBind()? Voir cette kb

+0

Non essayé, voir mon dernier exemple au bas de ma question, et cela n'a pas fonctionné. – sipwiz

+0

En fait, j'ai copié cet exemple. Avez-vous appelé .DataBind()? Et qu'est-ce qui n'a pas marché? Qu'est-il arrivé? – Onkelborg

+0

Je préférerais CommandArgument = '<% # Container.DataItemIndex%>' – Independent

2

Essayez cette

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument='<%= item.ItemID %>' /> 

Notez le single 'dans le CommandArgument

0

Vous pouvez vérifier ici Refrences

<%: item.ItemID %> 

Ajouté avec ASP.NET 4.0:

<%: est utilisé t o afficher une chaîne codée en HTML (utilisée de la même manière que <% =%>). Il HTML code automatiquement son entrée, sauf si l'entrée est un IHtmlString (c'est-à-dire quelque chose qui dit qu'il sait comment créer du HTML valide). L'intention est que ce soit tout sauf remplacer <% =%> (voir http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx)

Il peut être utile, faites-moi savoir pour plus d'aide.