Je suis nouveau dans ASP.NET MVC. Une de ma première tâche que je voudrais faire est de passer un paramètre sur le Pour accomplir cela, j'ai modifié l'index code> index code> à: p> i passe également mon paramètre via URL comme: p> Homecontroller code>. public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
5 Réponses :
Vous devez nommer le paramètre dans l'index code> méthode code> ID code>, selon la définition de route. Sinon, si vous ne voulez pas le changer, ajoutez un attribut httpget code> tel que:
C'était une bonne idée de changer le nom du paramètre dans la méthode et cela fonctionne, mais comme vous l'avez dit qu'il est possible d'atteindre l'objectif d'une autre manière. Où puis-je ajouter un attribut 'httptt'? Parce que quand j'essaie de l'ajouter au-dessus de ma méthode, j'ai eu une erreur "httpgetattribute" ne contient pas de constructeur qui prend 1 arguments ". Mon projet est .NET Framework.
Ah, je pensais que c'était ASP.NET CORE! J'ai mis à jour la réponse!
Comme vous avez suggéré que j'ai modifié la méthode et maintenant, il ressemble à [httpget] [itinéraire ("home / index / {strparam}")] Index de chaîne publique (string strparam) code> mais malheureusement, cela ne fonctionne toujours pas.
Pouvez-vous essayer, juste pour le débogage, de commenter la définition de la route dans RegisterRoutes?
Lorsque je commente la définition de route, je viens de "erreur http 404.0 - non trouvé" et rien ne fonctionne.
J'ai appris peu de choses et j'ai résolu ce problème. Cela n'a pas fonctionné simplement parce que je n'avais pas le routes.mapmvcattributeroutes (); code> méthode dans mon inscristrouts code>. Maintenant, il semble fonctionner parfaitement. Merci pour l'aide!
Avez-vous essayer ce qui suit:
[HttpGet("{strParam}")]
[Route("/Home/Index")]
public string Index(string strParam)
Je pense que c'est une solution correctement mais j'ai une erreur "httpgettattribute" ne contient pas de constructeur qui prend 1 arguments ".
Vérifiez votre itinéraire de la carte
@ Don2: Cela vous a-t-il aidé?
comme alternative, dans votre itinéraire, c'est défini comme ID code>. Si vous nommez votre paramètre comme tel, cela fonctionnera également. public string Index(string id)
Essayez de le transmettre à l'aide de la chaîne de requête pour par exemple. HTTPS: // localhost: 44308 / Accueil / Index? Strparam = Test . p>
Essayez ensuite ce qui suit: dans mon startup -> Configurer passe ci-dessous: p> http: // localhost: 5001 / Test / Index / World P> Sortie: Bonjour World P > p>