2009-04-12 4 views
3

Je souhaite transmettre une valeur de contrôle d'entrée (disons textbox1.value ou une variable javascript) à une méthode d'action de contrôleur (en tant que paramètre) sans un message de formulaire (en utilisant Ajax.ActionLink). Veuillez consulter le code ci-dessous.Obtention d'une valeur d'entrée ou d'une variable JavaScript dans ASP.NET MVC Ajax.ActionLink

Est-il possible d'affecter quelque chose comme new {name = textbox1.value} dans Ajax.ActionLink.

Voir

<input type="text" id="textbox1" /> 
<%= Ajax.ActionLink("mylink", "linkfunction", new {name = textbox1.value}, new AjaxOptions { UpdateTargetId = "result"}) %> 
<span id="result"></span> 

et de l'action du contrôleur est:

public string linkfunction(string name) 
{ 
    return DateTime.Now.ToString(); 
} 

Répondre

1

Cela ressemble à ceci:

ASP.NET MVC : AJAX ActionLink- Target an HTML attribute

De plus, vous n'avez pas besoin de passer dans la nom de contrôle dans votre action.

+0

merci, mais ma question vous a troublé. Je veux passer la valeur de textbox1 à mon contrôleur (en tant que paramètre de lien de fonction), ainsi j'ai besoin d'un certain chemin pour passer textbox1.value dans Ajax.ActionLink. Je ne sais pas comment faire ça. –

+0

Où vous êtes capable de comprendre comment accomplir la tâche? Je suis dans le même bateau que vous l'étiez probablement. curieux si vous avez trouvé une solution. –

0

J'ai eu ce même problème, sauf que j'utilisais jQuery pour faire ma demande ajax:

$('#ajax-content').load('<%= this.Url.Action("Details", "Page", new { id = someJavascriptVariable }) %>'); 

J'ai eu à travailler comme ceci:

$('#ajax-content').load('<%= this.Url.Action("Details", "Page",) %>' + '/' + someJavascriptVariable); 

Ou, dans votre cas, il pourrait ressembler à ceci:

$('#ajax-content').load('<%= this.Url.Action("Details", "Page",) %>' + '?name=' + textbox1.value); 
+0

pour le rendre un peu plus propre, vous pouvez transmettre les paires clé-valeur comme argument de données à la méthode load et jquery va gérer la concaténation, etc –

+0

$ ('# ajax-content'). Load ('<% = this. Url.Action ("Détails", "Page")%> ', {name = textbox1.value}); –

0

J'ai eu un problème similaire. Une fois qu'il a été signalé pour moi que ces fonctions renvoient des chaînes le reste est tombé en place -, essayez la

suivante
Ajax.ActionLink("mylink", "linkfunction", 
    new {name = __MyValue__}, new AjaxOptions 
    { UpdateTargetId = "result"}).Replace("__MyValue__", textbox1.value) 

Je ne l'ai pas testé cet extrait, mais quelque chose comme cela a fonctionné très bien pour moi.

Bonne chance.

Questions connexes