161 votes

Comment ajouter un paramètre de lien aux aides de balises asp dans ASP.NET Core MVC ?

J'ai beaucoup d'expérience avec ASP.NET MVC 1-5 . Maintenant, j'apprends ASP.NET Core MVC et je dois passer un paramètre au lien dans la page. Par exemple, j'ai l'exemple suivant Action

 [HttpGet]
 public ActionResult GetProduct(string id)
 {
      ViewBag.CaseId = id;
      return View();
 }

Comment puis-je mettre en place le lien pour cette action en utilisant les aides de balises ?

<a asp-controller="Product" asp-action="GetProduct">ProductName</a>

295voto

Alex Points 1707

Vous pouvez utiliser le préfixe d'attribut asp-route- pour préfixer les noms des variables de votre route.

Exemple :

<a asp-controller="Product" asp-action="GetProduct" asp-route-id="10"> ProductName</a>

2 votes

Si j'ai plusieurs paramètres, je dois tout ajouter avec cette méthode ?

52 votes

@elvin-mammadov, ouais, en utilisant asp-route-yourParamName par exemple : asp-route-foo="bar"

2 votes

@ElvinMammadov Votre commentaire asp-route-yourParamName concernant les paramètres d'entrée supplémentaires a été très utile. Merci.

38voto

Konrad Viltersten Points 4802

Vous pouvez appliquer la syntaxe suivante.

<a asp-controller="Member"
   asp-action="Edit"
   asp-route-level="3"
   asp-route-type="full"
   asp-route-id="12">Click me</a>

Cela produira l'itinéraire d'appel comme ceci.

/Membre/Edit/3/full/12

Vous pouvez ensuite le recevoir selon la méthode indiquée ci-dessous.

[Route({level}/{type}/{id})]
public IActionResult Edit(int level, string type, int id) { ... }

Bien que l'attribut décorant la méthode ne soit pas requis en MVC, il montre plus clairement comment lier les attributs du lien aux paramètres passés dans la méthode.

1 votes

Pour moi, au lieu de /Member/Edit/3/full/12 il génère /Member/Edit/3?type=full&id=12

1 votes

@Arif Je ne peux pas dire avec certitude pourquoi et je ne suis pas dans un environnement C# pour le moment (trop paresseux pour en créer un aussi). Cependant, je dirais que cela dépend de la question de savoir si nous déclarons explicitement [FromUrl] o [FromQuery] etc., qui peuvent différer d'une version à l'autre de la plate-forme .NET et/ou qui dépendent de l'héritage de classes pour les appels WebAPI purs (par opposition aux classes pour les appels WebAPI). Contrôleur de base avec des vues et tout ça). Ce n'est qu'une estimation, NB.

7voto

si vous voulez mettre l'id variable dans le lien dans la grille ou le tableau quelque chose ci-dessous code peut être utilisé

[HttpGet]
[Route("/Product/GetProduct/{id}")]
 public ActionResult GetProduct(string id)
 {
      ViewBag.CaseId = id;
      return View();
 }

 <a  asp-controller="Product" asp-action="GetProduct" asp-route-id="@item.id" >ProductName</a>

1 votes

Pouvez-vous expliquer votre réponse ? Les réponses codées sans explication ont tendance à être rétrogradées ou supprimées.

0voto

saeid Points 1

En arrière-plan :

Ce code doit être écrit en haut de l'action dans le contrôleur.

[Route("/Controller/Method/{Object or varible name}")]
public actionresult method name(your variable)
{
    //your code...
}

Sur le front :

@{
var url = "/Controller/Method/" + your data;
<a href="@url"> click me for send data()</a>
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X