Utilisez le moteur de routage pour les soumissions de formulaire en ASP.NET MVC 4 Prévisualisation

StackOverflow https://stackoverflow.com/questions/8485

Question

Je suis à l'aide d'ASP.NET MVC Aperçu 4 et je voudrais savoir comment utiliser le moteur de routage pour les soumissions de formulaire.

Par exemple, j'ai une route comme ceci:

routes.MapRoute(
            "TestController-TestAction",
            "TestController.mvc/TestAction/{paramName}",
            new { controller = "TestController", action = "TestAction", id = "TestTopic" }
            );

Et un formulaire de déclaration qui ressemble à ceci:

<% using (Html.Form("TestController", "TestAction", FormMethod.Get))
   { %>
     <input type="text" name="paramName" />
     <input type="submit" />
<% } %>

qui rend à:

<form method="get" action="/TestController.mvc/TestAction">
  <input type="text" name="paramName" />
  <input type="submit" />
</form>

L'URL de la soumission d'un formulaire est:

localhost/TestController.mvc/TestAction?paramName=value

Est-il possible d'avoir cette forme de soumission de la route à l'URL souhaitée de:

localhost/TestController.mvc/TestAction/value

Les seules solutions que je peux penser à la création d'un recours distinct, qui vérifie juste les paramètres de la requête, ou à l'utilisation de Javascript.

Était-ce utile?

La solution

Solution:

public ActionResult TestAction(string paramName)
{
    if (!String.IsNullOrEmpty(Request["paramName"]))
    {
        return RedirectToAction("TestAction", new { paramName = Request["paramName"]});
    }
    /* ... */
}

Autres conseils

Dans votre parcours, de se débarrasser de l' {paramName} une partie de l'URL.Il devrait être:

TestController.mvc/TestAction

Comme c'est l'URL que vous souhaitez à la demande de la route.Votre formulaire sera alors à cette URL.Posté valeurs d'un formulaire sont mappés à des paramètres d'une méthode d'action automatiquement, donc ne vous inquiétez pas de ne pas avoir que des données transmises à votre méthode d'action.

Ma compréhension est que c'est la façon dont fonctionne le HTML.Si vous faites un <form url="foo" method="get"> et poster le formulaire, puis le formulaire de post foo?

param1=value1&...&paramn=valuen

Il n'a rien à voir avec MVC.

D'ailleurs, quelle est la partie de REPOS n'est que l'URL de la violer?Ce n'est pas un jolie URL, mais par définition stricte de REPOS, il peut être de tout repos.Le REPOS ne spécifie pas que les paramètres de la requête doivent être dans une URL segment.Et dans ce cas, ce sont les paramètres de la requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top