2009-10-15 5 views
3

J'ai un formulaire simple avec une seule zone de texte et un bouton d'envoi. Le formulaire envoie essentiellement à une page différente avec la valeur dans la zone de texte en tant que chaîne de requête. Lorsque je clique sur le bouton Envoyer, le querystring est dans ce format, par exemple:ASP.NET MVC - Réécriture de FormMethod.Get querystring?

mysite.com/?TargetCode=Test1 

Je voudrais à afficher dans ce format: mysite.com/Test1

J'ai déjà une action dans mon HomeController qui prennent le "TargetCode" comme chaîne de requête, et j'ai déjà configuré un routage dans le Global.ascx.cs pour cela. Que dois-je faire pour réécrire la chaîne de requête afin qu'elle n'ait pas ce "? TargetCode =" dans l'URL? Voici le code pour la forme que j'ai:

<% using (Html.BeginForm("Index", "Home", FormMethod.Get, new { id = "CodeForm" })) 

Merci, Kenny.

+0

double exact: http://stackoverflow.com/questions/1573566/mvc-routing-doesnt-pickup-querystring –

+0

En fait, mon autre question portait sur mon index (chaîne cible) l'action ne décrochez le querystring , ça fonctionne bien maintenant. Cette question est sur la façon de réécrire mon URL. Merci :) –

Répondre

0

Je pense que vous devrez utiliser jQuery pour faire la soumission sinon vous dépendez de la façon dont le navigateur construit l'URL. Mise à jour pour inclure un crochet dans le plug-in de validation.

$('#CodeForm').submit(function() { 
    var $form = $(this); 
    if ($form.valid()) { 
     window.location.href = $form.attr('action') 
            + '/' 
            + $('[name=TargetCode]').val(); 
    } 
    return false; 
}); 
+0

Salut tvanfosson, J'utilise aussi jQuery valider la bibliothèque pour m'assurer que la zone de texte a de la valeur dedans (champ obligatoire.) Quand j'utilise la fonction jQuery que vous avez posté, elle a court-circuité la validation. Voici ce que j'ai: $ (document) .ready (function() { $ ("# CodeForm") valider(); $ ('# de CodeForm') soumettre (function() { fenêtre.. .location.href = '/' + $ ('[name = TargetCode]'). val(); return false; }); }); Merci, Kenny. –

+0

Vérifiez donc si le formulaire est valide avant de l'envoyer. – tvanfosson

+0

Merci beaucoup, ce code mis à jour fonctionne bien! –

Questions connexes