2010-03-22 5 views
21

-je utiliser ASP.NET et un contrôle d'étiquette sur ma page, que je remplis avec le jQuery-CommandComment remplir un Label.text - Propriété via jQuery

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

.val() n'a pas semblent travailler avec ça.

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.

+0

pourrions-nous voir le code HTML? – mcgrailm

Répondre

35

Si vous souhaitez afficher la valeur sur le client et qu'il soit disponible sur la page, vous avez besoin d'une entrée qui va s'envoyé au code-behind lorsque vous postez comme ceci:

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

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

En le code-derrière:

myInput.Value 
+0

+1. Les contrôles 'HiddenField' sont certainement la solution la plus simple à ce problème. –

+0

C'est vraiment la méthode la plus simple, je l'ai utilisée. – AGuyCalledGerald

+2

Je pense que cette réponse pourrait être clarifiée en mentionnant que dans le code-behind, 'myLabel.Text' n'aura pas reçu le contenu que vous avez défini via JQuery. – ClearCloud8

8

Je pense que votre problème est que les étiquettes (affichées sous la forme span) sont intrinsèquement en lecture seule dans le monde asp.net. Ils ne sont pas destinés à être utilisés en tant que contrôles 'input', et en tant que tels les changements de leur HTML sur le côté client sont ignorés du 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 ajax webmethods dans votre code derrière sont statiques, et à cause de cela ne peut pas accéder à l'ensemble de contrôle 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. Ce sont techniquement des contrôles 'd'entrée' et leurs valeurs changées sur le côté client sont envoyées au serveur comme vous le désirez. Vous devez juste garder l'étiquette/span et le champ/entrée cachés synchronisés sur le client.

Espérons que cela aide.

+0

L'explication en profondeur est bonne, merci! – MrBoJangles

Questions connexes