Asp.net mvc ASP.NET MVC-属性路由未找到区域视图

Asp.net mvc ASP.NET MVC-属性路由未找到区域视图,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我一直在到处寻找答案,但似乎找不到任何答案。我基本上有一个MVC应用程序设置,我正在为我的路线使用内置的AttributeRouting 文件夹结构如下所示 public class Application : System.Web.HttpApplication { protected void Application_Start(){ AreaRegistration.RegisterAllAreas(); // other web optimization s

我一直在到处寻找答案,但似乎找不到任何答案。我基本上有一个MVC应用程序设置,我正在为我的路线使用内置的
AttributeRouting

文件夹结构如下所示

public class Application : System.Web.HttpApplication {
   protected void Application_Start(){
      AreaRegistration.RegisterAllAreas();
      // other web optimization stuff
      RouteConfig.RegisterRoutes(RouteTable.Routes);
   }
}
  • 模型
  • 观点
  • 控制器
  • 区域
    • 成员
      • MemberAreaRegistration.cs
      • 控制器
        • HomeController.cs
      • 观点
          • Account.cshtml
然后我在
global.asax
中像这样连接我的路线

public class Application : System.Web.HttpApplication {
   protected void Application_Start(){
      AreaRegistration.RegisterAllAreas();
      // other web optimization stuff
      RouteConfig.RegisterRoutes(RouteTable.Routes);
   }
}
因此,
MemberAreaRegistration.cs
很简单

namespace App.Web.Areas.Member {
   public class MemberAreaRegistration: AreaRegistration {
      public override string AreaName { get { return "Member"; } }
   }
   public override void RegisterArea( AreaRegistrationContext context){ }
} 
我试着用属性连接它

/areas/member/controllers/homecontroller.cs

// ...
[Route("member/account")]
public ActionResult Account() { return View(); }
// ...
问题是它找到了路线,但找不到视图。我得到以下错误

未找到视图“帐户”或其主视图,或者没有视图引擎 支持搜索的位置。下列地点为 搜索:

~/Views/Home/Account.aspx

~/Views/Home/Account.ascx

~/Views/Shared/Account.aspx

~/Views/Shared/Account.ascx

~/Views/Home/Account.cshtml

~/Views/Home/Account.vbhtml

~/Views/Shared/Account.cshtml

~/Views/Shared/Account.vbhtml

所有人都认为,这应该很好——如果不行,我希望
~/area
至少在它试图搜索的路径上。我是否需要连接一些额外的东西来实现此功能

我正在使用ASP.NETMVC5.0

如果我对视图的绝对路径进行硬编码,则它会工作。显然,这不是一个好情况。我希望它能找到不符合惯例的风景。但是如果我输入
返回视图(“~/areas/member/views/home/account.cshtml”)我确实得到了视图-所以我知道它可以访问文件,并且它是正确的

这是我的每个请求的
RouteConfig.cs

RouteConfig.cs
这是因为,一旦将路由定义为动作的属性,ASP.NET MVC就不知道它位于哪个区域,因此不知道在哪里查找视图

帐户
操作所在的控制器中,尝试显式指定
路由ea
属性

我在脑海中写下了这句话,但它应该是这样的:

[RouteArea("Member")]
[RoutePrefix("member")]
public class HomeController: Controller {
    [Route("account")]
    public ActionResult Account() { return View(); }
}
或者,或者:

[RouteArea("Member")]
public class HomeController: Controller {
    [Route("member/account")]
    public ActionResult Account() { return View(); }
}

似乎现在我们需要[RouteArea(“成员”,AreaPrefix=“”)]才能正常工作是的,我在控制器上安装[RouteArea(“成员”)后也遇到了同样的问题,一切正常