我有两个 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 回答
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
翻阅古今
TA贡献1780条经验 获得超5个赞
我在发现另一个问题(乍一看似乎无关)后找到了答案。
在我的 HomeController 中,添加了一个操作,如下所示:
[HttpGet("{assetId}")] public IActionResult AssetDetail(Guid assetId) { return View(); }
这就是问题所在。我想任何地方的任何行动都解决了这个行动。将上面的路线更改为此解决了它:
[HttpGet("Detail/{assetId}")]
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消