I want to pass text from LabelFrom and LabelTo as a parameter in OnClick.

<asp:Label ID="LabelFrom" runat="server"></asp:Label> <asp:Label ID="LabelTo" runat="server"></asp:Label> <asp:Button ID="ConcatConditions" runat="server" Text="Слияние без удалением старого" CommandArgument='<%#Eval(LabelFrom.Text) + ";" +Eval(LabelTo.Text)%>' OnClick="ConcatConditions_Click" /> 

The Label value is set in js:

  document.getElementById("<%= LabelFrom.ClientID %>").innerHTML = idFrom; document.getElementById("<%= LabelTo.ClientID %>").innerHTML = idTo; 

On server:

  protected void ConcatConditions_Click(object sender, EventArgs e) { var btn = (Button)sender; var arg = btn.CommandArgument.Split(';'); } 

In CommandArgument, LabelFrom.Text, LabelTo.Text is always void. Tell me what the problem is!

    1 answer 1

    The fact is that when sending data to the server, only values ​​from the <input> fields of the form are transmitted. The <asp:Label> element is rendered into the <span> , respectively, its value is not sent to the server.

    You can transfer data to the server in a hidden field. Add <asp:HiddenField> to the form:

     <asp:HiddenField ID="LabelValues" runat="server" /> 

    Script:

     document.getElementById("<%= LabelFrom.ClientID %>").innerHTML = idFrom; document.getElementById("<%= LabelTo.ClientID %>").innerHTML = idTo; document.getElementById("<%= LabelValues.ClientID %>").value = idFrom + ';' + idTo; 

    Handler on server:

     protected void ConcatConditions_Click(object sender, EventArgs e) { var arg = LabelValues.Value.Split(';'); } 

    You don't need the CommandArgument parameter in principle.