web-dev-qa-db-ja.com

ASP.NET CoreのRazorビューからURLのIDの値を取得する方法

そのようなhttp://localhost:5050/Posts/Create/3のようなページを持つ単純なASP.NET Core Webアプリケーションがあります。

RazorビューViews/Posts/Create.cshtmlでは、<a href="/Blogs/Details/3">« Back to Blog</a>のようなリンクを作成できるように、値「3」をどのように取得できますか?

これまでのところ、次のタグヘルパーを使用してリンクを作成しましたが、asp-route-idに何を配置するかわかりません。

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

私はデフォルトのmvcルートを使用しています:

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

モデル(つまりModel.Blog.BlogId)から取得できることはわかっていますが、Request.Query["id"]Views/Post/Create.cshtmlのようなものを使用してUrlから取得しようとしています。

asp-route-id="@Context.Request.Query["id"]を試しました。

11
kimbaudi

そのようなものContext.GetRouteData().Values["id"];

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

9
Daboul

現在ASP.NET Core 2.1でこれは動作します:

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

Asp.Net Core 2.2では、 "@ ViewContext.RouteData.Values [" id "]"というステートメントだけがこの " https:// localhost:44356/Administration/AddUser/ "。このようなURLがある場合 " https:// localhost:44356/Administration/AddUser/0?status = False " "value"の値を取得するには、 "@ Context.Request.Query ["status"] "

3
Andrei Ciocan

FWIW:@ ViewContext.RouteData.Values ["yourRouteId"]を使用します

2
Butch Kenney

Aspcore 2.1の場合:HttpContextAccessor.HttpContext.Request.Query["id"]

0
user6284893

これは私が使用したシンプルなc#コードで、.netコアと純粋なMVCでも動作します。

 var reqUrl = Request.HttpContext.Request;
 var urlHost = reqUrl.Host;
 var urlPath = reqUrl.Path;
 var urlQueryString= reqUrl.QueryString;
 if (urlQueryString == null)
 {
 ViewBag.URL= urlHost + urlPath;
 }
 else
 {
 ViewBag.URL= urlHost + urlPath + urlQueryString;
 }
0
Amey Chitale