我有两个URL,两个URL都应解析到同一页面。一个不返回404
http://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”,但不能在“资产”控制器中省略。
有人对我可能忽略的东西有任何想法吗?
编辑: 另外,我使用以下代码创建指向Index操作的链接
<a asp-controller="Assets" asp-action="Index">Manage Assets</a>
这会产生“ / Assets”,因此MVC似乎理解它可以省略“索引”,但是该链接不起作用并返回404。
答案 0 :(得分:0)
我发现了另一个问题(起初似乎并不相关)后找到了答案。
在我的HomeController中,添加了如下操作:
[HttpGet("{assetId}")]
public IActionResult AssetDetail(Guid assetId)
{
return View();
}
这是问题所在。我想任何地方的行动都可以解决这个问题。将上面的路线更改为此可以解决:
[HttpGet("Detail/{assetId}")]