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">« 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"]
.
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
Actuellement, dans ASP.NET Core 2.1, cela fonctionne:
Context.Request.Query["id"]
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 "]"
Pour aspcore 2.1, utilisez: HttpContextAccessor.HttpContext.Request.Query["id"]
FWIW: J'utilise @ ViewContext.RouteData.Values ["yourRouteId"]