【问题标题】:MVC Routing gives Object reference exceptionMVC 路由给出对象引用异常
【发布时间】: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


【解决方案1】:

我在 ASP.Net Core 文档中找不到任何内容,但查看 ASP.NET Web API 2 Documentation 和此 Tutorial,我认为您需要使用以下 2 个选项之一:

[Route("Home/Index/{id:Guid?}")]
public async Task<ActionResult> Index(Guid id = default(Guid))
{
}

[Route("Home/Index/{id:Guid=default(Guid)}")]
public async Task<ActionResult> Index(Guid id)
{
}

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2020-01-07
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    相关资源
    最近更新 更多