C# ASP.Net核心路由问题?
我是 在youtube上学习ASP.NET核心MVC课程(.NET 5)教程。当我点击编辑按钮时,我得到错误“这个本地主机页面找不到”,该按钮用于将我重定向到类别模型的部分视图。我没有代码错误,因为我是按照教程一行行。我的路线似乎还可以:C# ASP.Net核心路由问题?,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我是 在youtube上学习ASP.NET核心MVC课程(.NET 5)教程。当我点击编辑按钮时,我得到错误“这个本地主机页面找不到”,该按钮用于将我重定向到类别模型的部分视图。我没有代码错误,因为我是按照教程一行行。我的路线似乎还可以: app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default",
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>
这一行有一个问题:
识别。因此,值@obj.Id
没有被传递到Edit
操作中,因此它的int?未设置id
参数。这意味着返回NotFound()代码>行运行并生成404响应
相反,你需要。为完整起见,以下是更新版本:
您没有提到“删除”
操作,但这似乎遇到了相同的问题。是否在表中指定了控制器?您希望使用asp路由id而不是asp-all-route-id。标记之间确实存在一些差异,
//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);
}