2010-06-14 8 views
3

Si j'ai une zone de texte à mon avis:ASP.NET MVC - comment obtenir la valeur d'une zone de texte dans ma vue?

<div><%= Html.TextBox("Comments", Model.Comments)%></div>

Je veux poster le contenu de ce champ de saisie au contrôleur avec un appel Ajax. J'ai seulement besoin de cette valeur unique, donc je ne veux pas poster tout le formulaire.

<%= Ajax.ActionLink("update", "UpdateComments", 
       new { comments = /* ????? */ }, 
       new AjaxOptions { HttpMethod="POST" })%> 

Comment obtenir la valeur de la zone de texte?

+0

Ajax.ActionLink est une fonction d'assistance, qui génère un lien à extension JS, qui envoie des données via AJAX. Parce qu'il est généré côté serveur, et que la valeur est générée du côté client, vous ne pouvez pas passer une seule valeur comme ça. Vous devez soit écrire manuellement HTML et JS, soit soumettre un formulaire complet contenant cet élément (et attention à ne pas l'imbriquer dans un autre formulaire). – AlexanderMP

+0

@Alexander: c'est le commentaire le plus utile ici. Vous devriez le soumettre comme une réponse. – fearofawhackplanet

Répondre

1

Ajax.ActionLink est une fonction d'assistance, qui génère un lien à extension JS, qui envoie des données via AJAX. Parce qu'il est généré côté serveur, et que la valeur est générée du côté client, vous ne pouvez pas passer une seule valeur comme ça. Vous devez soit écrire manuellement HTML et JS, soit soumettre un formulaire complet contenant cet élément (et attention à ne pas l'imbriquer dans un autre formulaire).

2

Plutôt que d'écrire du code ajax côté serveur, vous devez utiliser Ajax côté client (par exemple jQuery) pour obtenir la valeur d'exécution de la zone de texte et publier cette valeur.

+0

Quand vous dites « devrait », est-il une raison pour laquelle la façon dont j'ai essayé est faux, ou pensez-vous que ce n'est pas la meilleure façon? – fearofawhackplanet

+0

Ce n'est pas si simple. Le code serveur est plus sur le traitement des demandes et l'envoi des réponses, le client est responsable de ** faire ** les demandes. Dans ce cas, vous ne voulez pas utiliser un POST de la forme pleine page, donc un Ajax POST est une alternative appropriée (et jQuery rend plus facile). –

0

Vous pouvez utiliser Ajax jquery. Comme ceci

function FunctionName() { 
     $.Post(URl, function(data) { 

     }); 
    } 
2

En utilisant jQuery, vous pouvez récupérer la valeur de la manière suivante.

$("#Comments").val(); 
Questions connexes