Asp.net mvc 从控制器定义自定义视图

Asp.net mvc 从控制器定义自定义视图,asp.net-mvc,Asp.net Mvc,这些天来,我一直在探索ASP.NETMVC5,并深入了解了一些基础知识。例如,我们创建了名为“HomeController”的控制器,在这方面,在“Home”文件夹中创建了名为“Index”的视图。现在,假设我们在名为“Data”的“Home”文件夹中创建另一个文件夹,它又有一个名为“ViewData”的视图。在“HomeController”中,我有一个名为“ViewData”的方法,如下所示(我希望此方法引用视图“ViewData”): 当我运行项目时,它会按预期工作。我的意思是,给我输出,

这些天来,我一直在探索ASP.NETMVC5,并深入了解了一些基础知识。例如,我们创建了名为“HomeController”的控制器,在这方面,在“Home”文件夹中创建了名为“Index”的视图。现在,假设我们在名为“Data”的“Home”文件夹中创建另一个文件夹,它又有一个名为“ViewData”的视图。在“HomeController”中,我有一个名为“ViewData”的方法,如下所示(我希望此方法引用视图“ViewData”):

当我运行项目时,它会按预期工作。我的意思是,给我输出,URL如下所示:

但我想这样显示它:因为它位于“Home”文件夹下。还有一件事-当我右键单击“ViewData()”以匹配视图时,它显示“无法找到匹配的视图”。我该怎么解决呢?只是想澄清一下这是否可能

下面是文件夹结构:

Views/Home/Data/ViewData.cshtml

在控制器中,显示以下内容:

Controllers/HomeController.cs

您可以使用来实现这一点:

  • 在Visual Studio->添加->区域中右键单击解决方案
  • 称之为家
  • 转到主区域中的控制器文件夹->右键单击->添加->控制器
  • 称之为数据控制器
  • 最后,在DataController中创建一个名为ViewNodeData的操作
  • 现在您可以像这样访问它-

    如果出于某种原因不想使用区域,您可以在RouteConfig.cs中调整路由

    routes.MapRoute(
        name: "Default",
        url: "Home/{controller}/{action}/{id}",
        defaults: new { controller = "Data", action = "ViewNoData", id = UrlParameter.Optional }
    ); 
    
    您可以使用来实现这一点:

  • 在Visual Studio->添加->区域中右键单击解决方案
  • 称之为家
  • 转到主区域中的控制器文件夹->右键单击->添加->控制器
  • 称之为数据控制器
  • 最后,在DataController中创建一个名为ViewNodeData的操作
  • 现在您可以像这样访问它-

    如果出于某种原因不想使用区域,您可以在RouteConfig.cs中调整路由

    routes.MapRoute(
        name: "Default",
        url: "Home/{controller}/{action}/{id}",
        defaults: new { controller = "Data", action = "ViewNoData", id = UrlParameter.Optional }
    ); 
    

    谢谢你的回复。不使用Areas文件夹可以吗?我的意思是我们通常使用ASP.NET MVC中的默认文件夹结构做什么?在这个文件中,现在,我已经使用了默认的文件夹结构:routes.MapRoute(名称:“default”,url:“{controller}/{action}/{id}”,默认值:new{controller=“Home”,action=“Index”,id=urlparmeter.Optional});那么它会产生任何冲突吗?Home/{controller}/{action}/{id}?这就是您拥有的吗?那么它应该可以工作。如果没有,那么该路由和其他路由之间存在冲突。那么您必须使用areasOK。如果我创建了areas文件夹,我是否可以从默认文件夹中的文件为新文件夹区域创建操作链接,如下所示:@Html.ActionLink(“单击此处继续”,“主页/数据/视图节点数据”)

    可以,但有一个额外的参数必须与区域名称一起传递。你可以在谷歌上搜索这方面的示例。如果我的答案有助于你感谢回复,请记住将我的答案标记为正确。不使用Areas文件夹可以吗?我的意思是我们通常使用ASP.NET MVC中的默认文件夹结构做什么?在这个文件中,现在,我已经使用了默认的文件夹结构:routes.MapRoute(名称:“default”,url:“{controller}/{action}/{id}”,默认值:new{controller=“Home”,action=“Index”,id=urlparmeter.Optional});那么它会产生任何冲突吗?Home/{controller}/{action}/{id}?这就是您拥有的吗?那么它应该可以工作。如果没有,那么该路由和其他路由之间存在冲突。那么您必须使用areasOK。如果我创建了areas文件夹,我是否可以从默认文件夹中的文件为新文件夹区域创建操作链接,如下所示:@Html.ActionLink(“单击此处继续”,“主页/数据/视图节点数据”)

    可以,但有一个额外的参数必须与区域名称一起传递。您可以通过谷歌搜索这方面的示例。如果我的答案对您有帮助,请记住将其标记为正确