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é:
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
Le problème est le
Puis de son autre chose. Je viens de copier votre code dans mon projet et il fonctionne très bien.
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
Vous devez vous connecter pour publier un commentaire.
Le problème est résolu en passant le paramètre à la vue de la manière suivante:
Ou
Lorsque vous passez une
string
modèle à la vue, si le modèle est unstring
paramètre, il est interprété comme le nom de la vue pour les raisons suivantes la surcharge de méthodeOriginalL'auteur Daniel Peñalba
string?
ne fonctionnera pas carstring
n'est pas un type de valeur.Vous pouvez définir une valeur par défaut pour ce paramètre:
OriginalL'auteur Anton Maximov
Votre
Download
route est en conflit avec votreDefault
route. Commentaire de laDownload
route et il fonctionnera probablement.BTW, vous pouvez installer RouteDebugger à comprendre ce genre de problèmes pour vous-même.
Veuillez simplifier votre question, autant que possible, avant de la poster. Les points étaient trompeuses. Qu'advient-il si vous changez votre méthode de contrôleur de simplement attendre un int? Ce qui se passe dans une toute nouvelle solution? Avez-vous essayé RouteDebugger ou Aperçu?
OriginalL'auteur demoncodemonkey
Votre contrôleur est à la recherche d'un point de vue avec le même nom que l'attribut de version est entré dans l'url (par exemple 4.1.54.28). Êtes-vous intentionnellement la recherche d'un point de vue avec ce nom, auquel cas il devrait être dans les points de Vue/dossier de Téléchargement ou de votre projet. Si, toutefois, vous voulez simplement de les transmettre à la vue par défaut comme une variable à être utilisées sur la page de votre mieux de s'en tenir à un modèle ou vous pouvez simplement coller dans ViewBag si c'est un one off.
Aussi, vous n'avez pas besoin d'utiliser:
Vous pouvez utiliser routedata au lieu par exemple
Espère que cela aidera
OriginalL'auteur HuwD
Vous ne sont pas mis le nom de l'action dans l'url comme {action}
vous pouvez essayer:
OriginalL'auteur Yehia
Je suis sûr que c'est parce que dans la Vue de l'état, il est un paramètre facultatif, mais votre contrôleur dit que c'est obligatoire. Modifier la signature de votre méthode de l'indice de s'attendre à un nullable param
OriginalL'auteur CSharper
Pourquoi ne pas avoir deux méthodes dans votre téléchargement de contrôleur:
OriginalL'auteur C Bauer