79 votes

Comment obtenir l'ID de la route actuelle dans une vue à partir de l'URL (ASP.NET MVC)

Dans la vue qui est renvoyée à partir d'une URL telle que /Controller/Action/1 (en supposant que la route par défaut est controller/action/id), comment puis-je avoir accès à l'ID à partir de la vue ?

Je ne veux pas avoir à l'ajouter au dictionnaire ViewData au niveau de l'action lors du traitement de la demande.

3 votes

Pourquoi ne pas l'ajouter au dictionnaire ViewData ? C'est le mécanisme qui est prévu pour exactement ce que vous décrivez.

2voto

RAM Points 892

Nous pouvons passer id como Route Data o QueryString Ainsi, pour soutenir les deux Je recommande cette méthode :

var routeValues=Url.RequestContext.RouteData.Values;
var paramName = "id";
var id = routeValues.ContainsKey(paramName)?
         routeValues[paramName]:
         Request.QueryString[paramName];

2voto

A.M. Patel Points 290

Je pense que vous pouvez utiliser directement l'action url. Url.RequestContext.RouteData.Values["id"]

1voto

pimbrouwers Points 5499

Ce n'est que mon avis, mais j'utilise toujours des modèles de vue pour transmettre des données à mes vues. Même si c'est aussi simple que d'avoir besoin d'un fichier int comme l'identité.

En procédant ainsi, l'accès à cette valeur devient trivial, car MVC fait tout le travail pour vous.

Pour ce que ça vaut, j'ai l'habitude nom mes modèles de vue comme tels :

{Controller}{ViewName}ViewModel

Cela permet de garder les choses organisées à l'échelle.

Un exemple :

// ~/ViewModels/HomeEditViewModel.cs
public class HomeEditViewModel
{
  public int Id { get; set; }
}

// ~/Controllers/HomeController.cs
public IActionResult Edit(int id)
{
  return View(new HomeEditViewModel() { Id = id });
}

// ~/Views/Home/Edit.cshtml
@model HomeEditViewModel

<h1>Id: @Model.Id</h1>

-1voto

J'ai juste utilisé <%= model.id %> et ça marche

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