web-dev-qa-db-fra.com

Comment obtenir la valeur de l'URL à partir de Razor View dans ASP.NET Core

J'ai une simple application Web ASP.NET Core avec une page telle que http://localhost:5050/Posts/Create/3.

Dans ma vue Razor View Views/Posts/Create.cshtml, comment pourrais-je obtenir la valeur "3" pour pouvoir créer un lien tel que <a href="/Blogs/Details/3">« Back to Blog</a>?

Jusqu'ici, le lien a été créé à l'aide de l'aide de balise suivante, mais je ne sais pas quoi mettre pour asp-route-id:

<a asp-controller="Blogs" asp-action="Details" asp-route-id="" class="btn btn-default btn pull-right">&laquo; Back</a>

J'utilise simplement la route par défaut mvc:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

Je sais que je peux l'obtenir du modèle (c'est-à-dire, Model.Blog.BlogId), mais je cherche à l'obtenir de l'URL en utilisant quelque chose comme Request.Query["id"] dans Views/Post/Create.cshtml.

J'ai essayé asp-route-id="@Context.Request.Query["id"].

7
kimbaudi

Quelque chose comme ça Context.GetRouteData().Values["id"];?

Aussi http://www.blakepell.com/how-to-get-the-current-route-in-a-view-with-asp-net-5-mvc-6

8
Daboul

Actuellement, dans ASP.NET Core 2.1, cela fonctionne:

Context.Request.Query["id"]
5
Fabian

Il semble que dans Asp.Net Core 2.2, seule la déclaration "@ ViewContext.RouteData.Values ​​[" id "]" obtiendra l'identifiant d'un lien comme celui-ci " https: // localhost: 44356/Administration/AddUser/0 ". Si vous avez une URL comme celle-ci " https: // localhost: 44356/Administration/AddUser/0? Status = False " et que vous voulez obtenir la valeur de "status", vous pouvez l'utiliser "@ Context.Request.Query [" status "]"

0
Andrei Ciocan

Pour aspcore 2.1, utilisez: HttpContextAccessor.HttpContext.Request.Query["id"] 

0
user6284893

FWIW: J'utilise @ ViewContext.RouteData.Values ​​["yourRouteId"]

0
Butch Kenney