ASP MCV: Indice de l'action avec l'option paramètre de chaîne

Je voudrais avoir un Indice d'action, avec une option de paramètre de chaîne. Je suis incapable de le faire fonctionner.

J'ai besoin de les itinéraires suivants:

http://mysite/download
http://mysite/download/4.1.54.28

La première route enverra un modèle nul à la vue "Index", et la seconde pour envoyer une chaîne de caractères contenant le numéro de version.

Comment puis-je définir le parcours et le contrôleur?

C'est ma définition de la route:

routes.MapRoute(
    name: "Download",
    url: "Download/{version}",
    defaults: new { controller = "Download", action = "Index", version = UrlParameter.Optional }
);

 routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Et c'est le contrôleur:

    public ActionResult Index(string version)
    {
        return View(version);
    }

Pourquoi n'est-ce pas le travail? Je ne suis pas un expert en ASP MVC, mais cela semble être une très simple problème.

L'erreur

  • Quand je vais à http://mysite/downloads il fonctionne très bien
  • Quand je vais à http://mysite/downloads/4.5.6, le contrôleur est correctement appelé, et le paramètre est transmis correctement. Mais il semble alors que la vue n'est pas trouvé. C'est l'erreur que j'ai trouvé:

ASP MCV: Indice de l'action avec l'option paramètre de chaîne

public ActionResult Index(version string="") { return View(version); }
Avez-vous d'autres voies? Est-ce celle qui est définie avant la route par défaut?
Votre parcours a action="Version" mais votre méthode est Index(string version)
Le problème est le dots dans le version paramètre. Essayez http://mysite/download/4-1-54-28 et la méthode d'action doit être frappé
Puis de son autre chose. Je viens de copier votre code dans mon projet et il fonctionne très bien.

OriginalL'auteur Daniel Peñalba | 2014-09-16