Asp.Net Core 2.0:Razor视图不匹配字符串ID路由

时间:2017-09-30 22:57:37

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

此行仅在我的id为数字时有效。

<a asp-page="./Edit" asp-route-id="@item.Id">Edit</a>

在一个页面上,我需要它是一个字符串。

如果是数字,则生成为

<a href="/Users/Edit/1234">Edit</a>

但是当它是一个字符串时,它会被生成为

<a href="">Edit</a>

我尝试像<a href="/Users/Edit/1234">Edit</a>那样对这个值进行硬编码,但它只得到了404。

我在ASP.NET Core 2.0 Razor页面上使用默认路由...

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

        });

编辑页面设置为......

   public async Task<IActionResult> OnGetAsync(string id)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

在我的编辑页面的顶部是行......

@page "{id:int}"

我必须将此更改为

@page "{id:alpha}"

此时路线已匹配。

感谢Matthew P Jones撰写的这个页面https://exceptionnotfound.net/asp-net-core-demystified-razor-pages/,它提供了一个易于理解的使用新Razor页面进行路由的解释。

答案 1 :(得分:0)

对于字符串,只需使用: @page“ {id?}

,您应该能够在相应方法中检索id(字符串)的值。