【问题标题】:Cannot access view inside area in MVC 3无法访问 MVC 3 中区域内的视图
【发布时间】:2011-12-10 10:07:28
【问题描述】:

我遇到了一个简单的问题,我不知道如何解决这个问题。

未找到视图类别或其主类别,或者没有视图引擎支持搜索到的位置。以下位置是 已搜索:
~/Views/ShoppingCart/Category.aspx
~/Views/ShoppingCart/Category.ascx
~/Views/Shared/Category.aspx
~/Views/Shared/Category.ascx
~/Views/ShoppingCart/Category.cshtml
~/Views/ShoppingCart/Category.vbhtml
~/Views/Shared/Category.cshtml
~/Views/Shared/Category.vbhtml

我有一个名为 ShoppingCartArea 的区域,里面有视图 (Category.cshtml) 和控制器。但我不确定它是如何引用主视图文件夹的。

全球.asax

 public static void RegisterRoutes(RouteCollection routes)
 {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

      routes.MapRoute(
          "Default", // Route name
          "{controller}/{action}/{id}", // URL with parameters
          new { controller = "ShoppingCart", action = "Category", id = UrlParameter.Optional }, // Parameter defaults
          );

  }

  protected void Application_Start()                          
  {
      AreaRegistration.RegisterAllAreas();
      RegisterGlobalFilters(GlobalFilters.Filters);
      RegisterRoutes(RouteTable.Routes);
  }

和我的区域registration.cs

public override void RegisterArea(AreaRegistrationContext context)
{
     context.MapRoute(
         "ShoppingCartArea_default",
         "ShoppingCartArea/{controller}/{action}/{id}",
         new { controller = "ShoppingCart", action = "Category", id = UrlParameter.Optional },
                new[] { ShoppingCartAppMVC.Areas.ShoppingCartArea.Controllers}
     );
}

让我知道我做错了什么

【问题讨论】:

    标签: c# asp.net-mvc-3 model-view-controller


    【解决方案1】:

    您遇到这种情况可能是因为您手动添加了区域。最近一直在重建旧的 WebForms 应用程序,并慢慢将其转换为 MVC。我没有将 MVC 类型添加到项目中,只是添加了所需的文件夹等。不幸的是,我遇到了和你一样的问题。

    答案是添加正确的项目类型 (see this answer) 并从 项目的上下文菜单。在那之后,我将所有东西都移到了一个新创建的区域——它工作了。

    所以答案是 MVC 不仅会创建所有文件夹,还会更新其路由。

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 2017-08-01
      • 1970-01-01
      • 2011-10-09
      • 2012-02-17
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多