web-dev-qa-db-fra.com

Comment remplir un Label.Text - Propriété via jQuery

J'utilise ASP.NET et j'ai un contrôle d'étiquette sur ma page, que je remplis avec la commande jQuery

$('#<%= myLabel.ClientID %>').html(content);

.val () ne semble pas fonctionner avec cela.

D'une manière ou d'une autre, j'ai des problèmes pour obtenir le contenu en code-behind. Dans le code, la propriété myLabel.Text est toujours vide.

22
AGuyCalledGerald

Si vous voulez afficher la valeur sur le client et la mettre à disposition sur la page, vous avez besoin d'une entrée qui sera envoyée au code-behind lorsque vous POST comme ceci:

$('#<%= myLabel.ClientID %>').html(content);
$('#<%= myInput.ClientID %>').val(content);

<asp:Label Id="myLabel" runat="server" />
<asp:HiddenField ID="myInput" runat="server" />

Dans le code-behind:

myInput.Value
36
Nick Craver

Je pense que votre problème est que les étiquettes (rendues sous la forme de balises span) sont intrinsèquement en lecture seule dans le monde asp.net. Ils ne sont pas destinés à être utilisés comme contrôles "d'entrée", et en tant que tels, les modifications de leur code HTML côté client sont ignorées côté serveur, où les valeurs sont définies en fonction de ViewState.

Pour faire ce que vous demandez, vous devez également informer le serveur de la modification, par exemple en utilisant AJAX. Le seul problème ici est que les méthodes Web ajax dans votre code sont statiques et, de ce fait, ne peuvent pas accéder au jeu de contrôles de la page pour modifier la valeur .Text.

En fin de compte, l'option la plus simple consiste à utiliser des champs cachés, comme l'a dit Nick. Il s'agit techniquement de contrôles "d'entrée" et leurs valeurs modifiées côté client sont envoyées au serveur comme vous le souhaitez. Il vous suffirait de garder l'étiquette/la plage et le champ/l'entrée cachés synchronisés sur le client.

J'espère que cela t'aides.

8
KP.