我将视图的一部分移到了局部视图。
_ViewImports.cshtml
@using AsonCore.Helpers
@using AsonCore.Models
@namespace AsonCore.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Application.cshtml
@page
@model ApplicationModel
<partial name="/Pages/Partial/_ApplicationPartial.cshtml" />
_ApplicationPartial.cshtml
@model ApplicationModel
<section class="content application">
<div>
<form method="post" enctype="multipart/form-data">
<div>
<label asp-for='email.Firstname'>FORNAVN</label>
<input asp-for='email.Firstname' required />
</div>
<div>
<label asp-for="email.Lastname">ETTERNAVN</label>
<input asp-for="email.Lastname" required />
</div>
<div>
<input type="submit" value="Send" />
</div>
</form>
<partial name="/Pages/Shared/_FormScript.cshtml" />
</div>
</section>
_Project.csproj
<ItemGroup>
<Content Remove="Pages\Partial\**" />
</ItemGroup>
<ItemGroup>
<None Include="Pages\Partial\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
在构建时,我排除了局部视图以实现其内容的动态更新,当我这样做时,最初从_ViewImports.cshtml
继承的视图就停止了。
通过将@namespace AsonCore.Pages
添加到部分视图中,它获得了Model
,但是随后我注意到,在部署到服务器后(尽管它在VS2019中有效),“ TagHelpers”停止了工作。
添加@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
可能会解决修复了该问题,但是我的问题是,这是需要/应该如何做?
答案 0 :(得分:2)
我将此自我解答发布为一种临时解决方法(尽管仍然有人希望,它将在官方资源/文档中解释发生了什么以及在哪里找到它)。
似乎它不比编译局部视图复杂,它使用编译的_ViewImports.cshtml
,对于任何未编译的视图,都需要在其默认位置{{ 1}}文件夹。
就我而言,像这样
_ViewImports.cshtml
事实证明,一个人可以获取任何其他已编译的主视图文件(与部分视图一样,在发布时未将其删除),将其复制到Pages\
文件夹中,然后对其进行编辑一个想要的文件,它将重新加载并覆盖位于 views.dll
虽然上面的内容本身会呈现异常(当试图在运行时执行未编译的视图时),但是在此答案的帮助下它会起作用,它表示:
要解决此问题,您必须发布文件夹,添加 refs 子文件夹 一些运行时程序集。如果您这样做,通常会创建此 refs 文件夹 将
\Pages\Partial\ _Application.cshtml \Pages\ _ViewImports.cshtml \ AsonCore.Views.dll
设置为Pages\
的项目。那么你 必须一次完成发布而无需预编译到另一个文件夹,并且 从此处复制此 refs 子文件夹。
注意,除了在Core 2.2中使用此 refs 文件夹外,还有其他方法,如果有人知道的话,请随时用此编辑我的答案