首页 > 解决方案 > 使用字符串 ID 时未找到视图

问题描述

我有这个方法,HomeController去的时候效果很好,support/home/chat但是如果我去/support/home/chat?id=4它会给出错误:

InvalidOperationException:未找到视图“4”

 [Area("Support")]
    public IActionResult Chat(string? ID)
    {
       

        return View(ID);
    }

这是我在启动时的路由

  app.UseEndpoints(endpoints =>
            {
                endpoints.MapAreaControllerRoute(
                    name: "Support",
                    areaName: "Support",
                    pattern: "Support/{controller=Home}/{action=Index}/{id?}");

                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");

            });

标签: c#asp.netasp.net-core

解决方案


Controller.View 有很多重载(https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.controller.view?view=aspnet-mvc-5.2

让我们专注于

  • 查看(字符串路径)
  • 视图(对象模型)

当您想要使用具有给定路径且没有模型的视图时使用第一个,当您想要使用带有模型的默认视图时使用第二个。在您的情况下,您想使用第二个,但您的模型是字符串类型,因此您实际上使用的是第一个。

你所要做的就是:

 return View((object)ID); 

推荐阅读