【发布时间】:2019-05-26 01:29:03
【问题描述】:
我正在尝试使用 Razor Pages 应用程序处理插件。
解决方案包含 3 个项目:一个 Razor 页面应用程序和两个 Razor 类库 (RCL)。应用程序不得静态引用 RCL 项目,它们必须作为插件加载:
内页没有什么特别之处。特色页面只生成简单的 HTML。索引页面构建了一种菜单。
索引页面模型:
public class IndexModel : PageModel
{
public IEnumerable<MenuItem> MenuItems { get; private set; }
public void OnGet()
{
MenuItems = new List<MenuItem>
{
new MenuItem { Route = "FeatureA", Title = "Feature A" },
new MenuItem { Route = "FeatureB", Title = "Feature B" }
};
}
}
索引页面:
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
@foreach (var item in Model.MenuItems)
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/@item.Route">@item.Title</a>
</li>
}
</ul>
</div>
</div>
当我运行应用程序时,有菜单项,但它们的hrefs 是空的:
<div class="text-center">
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" href="">Feature A</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" href="">Feature B</a>
</li>
</ul>
</div>
</div>
当然,所有程序集(应用程序和功能程序)都在同一个目录中。
菜单适用于以下两种情况:
- 如果我在 App 项目中引用 RCL 项目,这会扼杀插件的想法;
- 或者如果我将
App.deps.json与FeatureLib_A和FeatureLib_B作为依赖项(只需从第一个案例中保存 deps 文件,删除引用,全部重建,复制保存的 deps 文件)。
另外,我尝试在 Startup 类中急切地加载 RCL 程序集。
正在加载程序集,但 Index 页面的行为相同。
有没有办法告诉 ASP 基础结构使用 RCL 程序集而不修改 deps 文件?我错过了什么?
【问题讨论】:
标签: c# asp.net-core razor-pages