【问题标题】:ASP .Net Core Routing issue?ASP .Net Core 路由问题?
【发布时间】:2021-01-11 23:34:31
【问题描述】:

我是 遵循 youtube 上的 ASP.NET Core MVC 课程 (.NET 5) 教程。当我单击 EDIT 按钮时,我收到错误“找不到此 localhost 页面”,用于将我重定向到类别模型的部分视图。我没有代码错误,因为我逐行遵循教程。我的路由似乎没问题:

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });

这是类别的索引视图:

<tbody>
            @foreach (var obj in Model)
            {
                <tr>
                    <td width="50%">@obj.Name</td>
                    <td width="30%">@obj.DisplayOrder</td>
                    <td class="text-center">
                        <div class="w-75 btn-group" role="group">
                            <a asp-controller="Category" asp-all-route-Id="@obj.Id" asp-action="Edit" class="btn btn-primary mx-2">
                                Edit
                            </a>
                            <a asp-controller="Category" asp-all-route-Id="@obj.Id" asp-action="Delete" class="btn btn-danger mx-2">
                                Delete
                            </a>
                        </div>
                    </td>
                </tr>
            }
        </tbody>

以及我的编辑操作方法:

//GET -  EDIT
    public IActionResult Edit(int? id)
    {
        if(id == null || id == 0)
        {
            return NotFound();
        }
        var obj = _db.Category.Find(id);
        if(obj == null)
        {
            return NotFound();
        }

        return View(obj);
    }

Index View for Category

【问题讨论】:

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


【解决方案1】:

这行有问题:

<a asp-controller="Category"
   asp-all-route-Id="@obj.Id"
   asp-action="Edit"
   class="btn btn-primary mx-2">

asp-all-route-Id 不是Anchor Tag Helper 识别的东西。因此,值 @obj.Id 没有被传递到 Edit 操作中,因此它的 int? id 参数没有被设置。这意味着 return NotFound(); 行运行并生成 404 响应。

相反,您需要asp-route-id。为完整起见,以下是更新版本:

<a asp-controller="Category"
   asp-route-id="@obj.Id"
   asp-action="Edit"
   class="btn btn-primary mx-2">

您没有提到 Delete 操作,但这似乎遇到了同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多