そのような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">« 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"]
を試しました。
そのようなものContext.GetRouteData().Values["id"];
?
また http://www.blakepell.com/how-to-get-the-current-route-in-a-view-with-asp-net-5-mvc-6
現在ASP.NET Core 2.1でこれは動作します:
Context.Request.Query["id"]
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"] "
FWIW:@ ViewContext.RouteData.Values ["yourRouteId"]を使用します
Aspcore 2.1の場合:HttpContextAccessor.HttpContext.Request.Query["id"]
これは私が使用したシンプルな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;
}