2011-01-06 4 views
0
<asp:Literal ID="Name1" runat="server">Item Name</asp:Literal> 
<asp:LinkButton runat="server" EnableViewState="false" Text='<%#Eval("Name1.Text")%>' /> 

Warum Eval() leer zurückgibt?<% # Eval ("Name1.Text")%> ist leer

Danke.

+0

Sie erkennen, dass Sie eine zusätzliche> nach ID = "Name1" haben? – NotMe

Antwort

0

Die Zeit, die Sie als dynamisches Argument übergeben möchten, liegt in einem datengebundenen Steuerelement.

Wenn es Standalone-Steuerelement ist, müssen Sie diese Werte nicht als Befehlsargument übergeben, sondern greifen einfach direkt auf das Click- oder OnCommand-Ereignis zu.

Wenn sich das Steuerelement innerhalb eines DataBound-Steuerelements befindet, können Sie das Befehlsargument im Code-Behind festlegen.

0

Ich denke nicht, dass die Kontrolle wird rechtzeitig gerendert werden.

Tun Sie es in Code hinter.

protected void Page_Init(object sender, Eventargs e) 
{  
    lnkButtonID.Text = Name1.Text; 
    lnkButtonID.CommandArgument = Name1.Text; 
} 
+0

Es ist besser, 'PreInit' – abatishchev

+0

zu verwenden. Tatsächlich ist es mein Ziel, den Text des Literals in einem CommandArgument eines ImageButtons zu übergeben: – Jul

2

Sie können Eval-Steuerungen, die Databound waren. Wenn Sie Page.DataBind aufrufen, können Sie alle Steuerelemente auswerten, die NamingContainer die Seite ist. Wenn Sie zum Beispiel DataBind eine Gridview, könnten Sie Kontrollen in GridRows eval.

0

Sie können es debuggen, indem Sie das Datenbindungsereignis von allem, was Sie versuchen, zu databinden und einen Blick auf die Variable werfen, nach der Sie in diesem Zusammenhang suchen. Wenn Sie versuchen, die Variable im Debug-Modus zu betrachten, wird es sehr offensichtlich, was das Problem ist.

0

In fac würde Ich mag, dies zu tun:

<asp:ImageButton runat="server" ID="addToCartIMG" OnCommand="btnAdd_Click" EnableViewState="false" CommandArgument='<%# itemId1.Value + ";" + Name1.Text %>' ImageUrl="<%$Resources:MasterPage, Image_AddToCart%>" /> 

wo element1 Hidden und Name1 eine wörtliche ist.

Wenn ich die Methode btnAdd_Click debuggen, ist CommandEventArgs leer.