0
votes

Valeur d'identification MVC toujours null

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 Homecontroller code>.

Pour accomplir cela, j'ai modifié l'index code> index code> à: p> xxx pré>

i passe également mon paramètre via URL comme: p>

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 }
        );
 }


0 commentaires

5 Réponses :


2
votes

Vous devez nommer le paramètre dans l'index méthode ID , selon la définition de route. Sinon, si vous ne voulez pas le changer, ajoutez un attribut httpget tel que: xxx


6 commentaires

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) 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 (); méthode dans mon inscristrouts . Maintenant, il semble fonctionner parfaitement. Merci pour l'aide!



-1
votes

Avez-vous essayer ce qui suit:

  [HttpGet("{strParam}")]
  [Route("/Home/Index")]

  public string Index(string strParam)


3 commentaires

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é?



1
votes

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)


0 commentaires

0
votes

Essayez de le transmettre à l'aide de la chaîne de requête pour par exemple. HTTPS: // localhost: 44308 / Accueil / Index? Strparam = Test .

Partager votre appartement s'il vous plaît jeter un oeil Entrez la description de l'image ici


0 commentaires

0
votes

Essayez ensuite ce qui suit: xxx

dans mon startup -> Configurer passe ci-dessous: xxx

http: // localhost: 5001 / Test / Index / World

Sortie: Bonjour World


0 commentaires