2010-10-22 1 views
0

Salut les gars, je fais un projet ASP.NET MVC juste pour l'apprentissage ... et coincé dans ce ...Valeurs de Gett de Html. contrôles dans ASP.NET MVC avec AJAX comme l'utilisateur interagissent

J'essaie le obtenir le valeur de la Html.TextBoxFor(model => model.ShortName) et afficher dans le côté www.blablabla.com/ Value, au moment de l'utilisateur est en train de taper.

J'ai essayé d'ajouter la référence de la bibliothèque AJAX sur le dessus:

<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 
<% Html.EnableClientValidation(); %> 

va ici le code unsucceed jusqu'à présent:

 <div class="editor-label"> 
      <%: Html.LabelFor(model => model.ShortName) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.ShortName) %> 
      <%: Html.ValidationMessageFor(model => model.ShortName) %> 
      This will be the name used for your short address 
      www.blablabla.com/<%: Model == null || string.IsNullOrEmpty(Model.ShortName) ? "shortName" : Model.ShortName %> 
     </div> 

Merci à l'avance

Répondre

0

D.J est correct - vous souhaitez utiliser Javascript pour cela. L'objet Model est transmis à la vue depuis le serveur. Une fois la page rendue, toute interaction de l'utilisateur avec la page sur le client n'a rien à voir avec le modèle (ou le serveur). Ce n'est que lorsque l'utilisateur envoie une requête HTTP ultérieure (par exemple un POST en soumettant un formulaire) qu'une action de contrôleur sera de nouveau impliquée.

Le modèle est utilisé dans l'exemple de code ci-dessus pour définir les valeurs initiales des éléments.

Pour ce faire, vous allez vouloir utiliser javascript, et probablement une bibliothèque comme jQuery.

Vous pouvez lier l'événement KeyPress du champ de texte, et ajouter sa valeur à la div:

<div class="editor-field"> 
    <%: Html.TextBoxFor(model => model.ShortName) %> 
    <%: Html.ValidationMessageFor(model => model.ShortName) %> 
    This will be the name used for your short address: www.blablabla.com/<span id="shortnameLabel"></span> 
</div> 

Et cela pour faire réellement le travail:

$('#ShortName').keypress(function(event) { 
    $('#shortnameLabel').text($(this).value(); 
}); 
+0

obtenu ... mais éditez cette partie à: $ ('# ShortName'). keyup (fonction (événement) {$ ('# shortnameLabel'). text ($ (this) .val());}); Merci! –

1

je pense que vous devriez faire ceci en utilisant javascript au lieu d'utiliser le code de balisage MVC.

Étant donné que l'interaction se produit dans le client sans aucun retour, le code que vous utilisez ne vous aidera pas à atteindre votre objectif.