ASP.NET零:如何在另一个项目中添加新区域?

ASP.NET Zero: How to add new Area in another project?

我已经创建了一个基于零框架的模块化应用程序 tutorial 因为那篇文章没有指导在 Web 模块中创建区域。所以我决定在根 Web 项目中创建另一个区域(名为 Payment)。

  1. Areas/F1 <--我的默认区域
  2. Areas/Payment <--新区

我创建了一个非常简单的控制器(继承自项目控制器基础 class),如下所示:

 public class BankCodeController : FastOneControllerBase
    {
        // GET: Payment/BankCode
        public ActionResult Index()
        {
            return View();
        }
    }

...还有我的 Index.cshtml

@using FastOne.Web.Navigation
@{
    ViewBag.CurrentPageName = PageNames.App.Payment.BankCode;
}
<div class="row margin-bottom-5">
    <div class="col-xs-12">
        <div class="page-head">
            <div class="page-title">
                <h1>
                    <span>BankCode</span>
                </h1>
            </div>
        </div>
    </div>
</div>

<div class="portlet light">
    <div class="portlet-body">
        <p>BANK CODE CONTENT COMES HERE!</p>
    </div>
</div>

但是当我尝试访问该视图时遇到如下错误

The controller for path '/Payment/BankCode' was not found or does not implement IController.

> Line 40:     @RenderSection("Styles", false) 
> Line 41:      
> Line 42:     @Html.Action("TenantCustomCss", "Layout") 
> Line 43:  
> Line 44:     <script type="text/javascript">

希望任何人都可以帮助我解决这个错误,一些指南可以在模块 Web 项目中创建这个区域(在教程中)。谢谢

更新

我在 ASPNET 零论坛中找到了这个解决方案

由于我使用了F1区的_Layout.cshtml,所以出现了这个错误。 我通过将 F1 区域名称添加到 _Layout.cshtml 中的 @Html.Action 用法来修复它。

例如

@Html.Action("Header", "Layout") becomes @Html.Action("Header", "Layout", new { area = "F1" })
@Html.Action("Sidebar", "Layout", new { currentPageName = ViewBag.CurrentPageName }) becomes @Html.Action("Sidebar", "Layout", new { currentPageName = ViewBag.CurrentPageName, area = "F1" })