I Configurez un itinéraire comme celui-là:
http://localhost:00000/Pesquisar/One/Two
5 Réponses :
Je ne sais pas si vous obtenez une URL propre directement à partir d'un formulaire HTML Une suggestion serait de EG P> ViewModel strong>: p> Obtenez CODE>.
POST CODE> À une action, faites ce dont vous avez besoin Pour faire avec les données, ensuite à la fin, rediriger vers votre URL propre. p>
@model MyApplication.Models.PesquisarModel
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.aaa)
@Html.TextBoxFor(m => m.bbb)
@Html.TextBoxFor(m => m.id)
<button type="submit">Submit</button>
}
Lorsque vous mappez une déroute, elle l'ajoute à la fin d'une liste. Lorsque le routeur cherche la règle pour correspondre, il commence au début de la liste et itère à travers elle. Il faudra la première règle qui correspond, pas la règle la plus spécifique. Parce qu'il est naturel d'annoncer le code à la fin, la règle par défaut (qui fonctionne pour presque tout) sera au début.
Essayez de ré-commander votre code pour ressembler à ceci: p> Plus d'informations Vous trouverez dans cette question:
Configuration de la configuration ASP.NET MVC 4 Routage avec coutume Variables de segment p> p>
Lorsque je appuie sur le bouton Envoi sous un formulaire (avec méthode Obtenir) l'URL est comme celle-ci: p>
http://mydomain.com/peesquisar?aaa=one&bbb=two p> blockQuote>
Mais je m'attendais à: p>
http://mydomain.com/one/two p> blockQuote>
Ceci est dû au fait que le navigateur STRT> n'est pas au courant de l'URL de fantaisie que vous souhaitez, car la forme standard
obtenez code> est de Ajoutez des valeurs de formulaire dans la QueryString em>. p>
Ce que vous avez pour la plupart probablement probablement, c'est quelque chose comme URL canoniques comprenant une carte d'identité et de titres , sauf rediriger à l'URL souhaitée si ce n'est pas l'URL que vous souhaitez afficher. P>
ou vous pouvez utiliser jQuery pour créer manuellement l'URL que vous souhaitez sur soumettre, mais nécessite plus de travail côté client. P>
Ceci est le comportement du navigateur. Lorsque vous faites un navigateur de demande d'accès à la demande, appendez toutes les paires keyvalue sur QueryString.
Le format de route mentionné sera disponible lorsque nous utilisons HTML.ActionLink ou HTML.ROUTEURL, etc. P>
Vous pouvez probablement écrire peu de code dans l'interactionExecutation (ou vous pouvez utiliser n'importe quel gestionnaire) pour reconstruire routedata et rediriger avec l'URL appropriée. ci-dessous le code n'est pas testé strud> p>
Comportement attendu. P>
Le système de routage est sur le côté serveur. Le navigateur ne sait rien sur les itinéraires et ce que vous faites survenir dans le navigateur. P>
Si vous souhaitez obtenir cet itinéraire, vous devez le composer du côté du client avec un script personnalisé qui utilise l'action Vous ne pouvez pas générer l'URL du côté serveur (qui pourrait être effectuée avec des méthodes d'extension Urlhelper) car les modifications apportées aux zones de texte ne seront pas mises à jour. P>
Ceci n'est pas conseillé car si vous modifiez les itinéraires, vous pouvez oublier de les mettre à jour dans vos scripts de navigateur, vous enfreindre l'application. P>
Vous pouvez éviter ce problème en créant l'URL du côté serveur à l'aide d'une méthode d'extension Urlhelper avec des espaces réservés spéciaux, qui pourraient être facilement remplacés du côté du client. C'est à dire. Générez une URL comme ceci: p>
En fournissant des routices comme ceci: Ensuite, créez un script de navigateur pour l'événement de clic de votre bouton, récupérez l'URL avec les espaces réservés dans le champ masqué et remplacez les espaces réservés avec les valeurs réelles des zones de texte. Pour exécuter le get Exécuter ceci: Si vous voulez d Ceci pour de nombreuses instances DIFFLNT, vous pouvez créer un assistant pour gerger le champ masqué avec l'URL et un JavaScript qui effectue les remplacements. P>
La question est ... Est-ce que ça vaut l'effort? P>
< Type = "texte"> code> valeurs. p>
http: // localhost / pesquisar / $ AAA $ / $ BBB $ / $ ID $ ID $ p> p> P>
nouveau {aaa = "$ AAA $, bbb =" $ bbb $, id = "$ id $"} code> à une méthode urlhelper. Cette URL peut être stockée dans la propriété de la valeur d'un champ caché. P>
document.location = TheURL; code> p>
Est-ce que la même chose se produit lorsque l'identifiant a une valeur?
@ Jeroenvannevel: Oui. Si je tape manuellement dans le navigateur, cela fonctionne (
http: // localhost: 00000 / pesquisar / foo / bar / 1 code>) mais via le formulaire obtenez-le. Je veux dire, ça marche, mais pas avec une URL amicale.