【发布时间】:2023-03-14 08:20:01
【问题描述】:
对于 .NET Core 2.1,我设置了以下路由;
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default_id",
template: "{controller=Home}/{action=Index}/{id?}");
});
以及跟随控制器;
public async Task<ActionResult> Index(Guid id = default(Guid)){
}
如果我访问喜欢;
http://localhost.example.com:5002/Users/Index/09e3eca9-6c66-09ed-701e-aa26dfab3dd2?Title=Adam
工作正常,但以下出现错误:
http://localhost.example.com:5002/Users/Index/
NullReferenceException:对象引用未设置为 对象。
我的设置无法解析无参数索引操作。
我错过了什么吗?
PS:我不想使用 Controller/Action 属性。如果可能的话,我想在Startup.cs解决它
不是答案,但在搜索时我发现了这个:https://github.com/aspnet/Mvc/issues/7518
似乎问题已解决,但我仍然遇到同样的问题。
【问题讨论】:
-
您的第一条路线将
id参数标记为选项(使用/{id?}),因此您的第二条路线有点毫无意义——它永远不会被执行 -
@StephenMuecke 是的,我注意到了。我只是在尝试随机的东西来让它工作,并从该代码中复制粘贴。我会删除它。
-
你试过
Index([FromRoute] Guid? id)。使用结构体作为参数时,最好使用可空版本并检查.HasValue,而不是使用default(T)。
标签: c# asp.net-mvc .net-core asp.net-mvc-routing asp.net-core-2.1