为了账号安全,请及时绑定邮箱和手机立即绑定

MVC 核心:在未指定“索引”的情况下浏览“资产”时,不会触发默认索引操作

MVC 核心:在未指定“索引”的情况下浏览“资产”时,不会触发默认索引操作

C#
智慧大石 2023-07-22 18:24:55
我有两个 URL,两者都应解析为同一页面。如果没有,则返回 404http://localhost:xxx/Assets = 404 未找到http://localhost:xxx/Assets/Index = 按预期工作这是我的索引操作:[HttpGet]public IActionResult Index(){    var vm = new AssetsIndexModel()        {          /* snipped, not important */        };    return View(vm);}这是我在 Startup.cs 中的唯一路线:app.UseMvc(routes =>{    routes.MapRoute("default", "{Controller}/{Action}/{id?}", defaults: new { Controller = "Home", Action = "Index" });});这是解决此问题的唯一操作。同一控制器中的所有其他操作都能正确解析。另外,如果我只是冲浪到“/Home”,我的 Home/Index 路线就可以工作。我可以在那里省略“/Index”,但不能在我的资产控制器中省略。有谁知道我可能会忽略什么?编辑:此外,我使用以下代码创建索引操作的链接<a asp-controller="Assets" asp-action="Index">Manage Assets</a>这会生成“/Assets”,因此 MVC 似乎知道它可以省略“Index”,但该链接不起作用并返回 404。
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

我在发现另一个问题(乍一看似乎无关)后找到了答案。

在我的 HomeController 中,添加了一个操作,如下所示:

[HttpGet("{assetId}")]
    public IActionResult AssetDetail(Guid assetId)
    { 
           return View();
    }

这就是问题所在。我想任何地方的任何行动都解决了这个行动。将上面的路线更改为此解决了它:

[HttpGet("Detail/{assetId}")]


查看完整回答
反对 回复 2023-07-22
  • 1 回答
  • 0 关注
  • 56 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信