【问题标题】:How to get value of id in Url from Razor View in ASP.NET Core如何从 ASP.NET Core 的 Razor 视图中获取 Url 中 id 的值
【发布时间】:2017-06-22 03:43:11
【问题描述】:

我有一个简单的 ASP.NET Core Web 应用程序,其页面类似于 http://localhost:5050/Posts/Create/3

在我的 Razor 视图 Views/Posts/Create.cshtml 中,我怎样才能获得值“3”以便我可以创建像 <a href="/Blogs/Details/3">« Back to Blog</a> 这样的链接?

到目前为止,使用以下 Tag Helper 创建了链接,但我不知道为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 中的Request.Query["id"] 从Url 中获取它。

我试过asp-route-id="@Context.Request.Query["id"]

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc tag-helpers


    【解决方案1】:

    【讨论】:

    • 是的,这不适用于 asp.net 核心。 asp.net core中没有RequestContext
    • 第一行是 asp.net 核心,从我的项目中粘贴,但可能无法完全按照您的意愿使用。最后一个链接呢?我没试过,但它应该是 MVC 6。
    • 嘿,我刚试过Context.GetRouteData().Values["id"],它可以工作。你可以编辑你的答案吗?我会将其标记为正确的解决方案。
    • 你也可以使用ViewContext.RouteData.Values["id"]
    • 我使用的是 Asp.net Core 2.0,只有 @MarkG 的解决方案对我有用
    【解决方案2】:

    目前在 ASP.NET Core 2.1 和 3.1 中有效:

    Context.Request.Query["id"]
    

    【讨论】:

      【解决方案3】:

      FWIW:我使用 @ViewContext.RouteData.Values["yourRouteId"]

      【讨论】:

        【解决方案4】:

        看起来在 Asp.Net Core 2.2 中只有语句“@ViewContext.RouteData.Values[“id”]”会从像这样的链接“https://localhost:44356/Administration/AddUser/0”中获取 id。 如果您有一个像“https://localhost:44356/Administration/AddUser/0?status=False”这样的网址,并且想要获取“状态”的值,您可以使用“@Context.Request.Query[“status”]”

        【讨论】:

          【解决方案5】:

          在 ASP.NET Core 3.1 & .NET 5 & .NET 6 这对我有用:

          @Context.Request.RouteValues["id"]
          

          【讨论】:

            【解决方案6】:

            使用 [FromRoute] 来实现同样的效果。

            @page "myaccount/{id}"

            @function{
              [FromRoute]
              public string Id {get;set;}
            }
            

            【讨论】:

              【解决方案7】:

              对于 aspcore 2.1,使用:HttpContextAccessor.HttpContext.Request.Query["id"]

              【讨论】:

                【解决方案8】:

                这是我使用的简单 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;
                 }
                

                【讨论】:

                  猜你喜欢
                  • 2016-08-14
                  • 2022-01-25
                  • 2010-11-02
                  • 2016-12-01
                  • 2018-02-24
                  • 2017-01-13
                  • 2017-09-27
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多