- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我将 View 的一部分移动到局部 View 中。
_ViewImports.cshtml
@using AsonCore.Helpers
@using AsonCore.Models
@namespace AsonCore.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
应用程序.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
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<RootNamespace>AsonCore</RootNamespace>
</PropertyGroup>
<ItemGroup>
<Content Remove="Pages\Partial\**" />
</ItemGroup>
<ItemGroup>
<None Include="Pages\Partial\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
</Project>
在构建时,部分 View 从已编译的 views.dll 中删除,以启用其内容的动态更新,当我这样做时,最初继承自 _ViewImports.cshtml
停止了。
通过将 @namespace AsonCore.Pages
添加到局部 View 中,它选择了 Model
,但后来我注意到,在部署到服务器之后(尽管它在 VS2019 中工作) ,“TagHelpers”停止工作。
同时在 View 中添加 @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
解决了这个问题,但我的问题是,这是需要/应该如何完成的吗?
或者是否有任何其他方法可以防止编译特定 View ,其中保留了“ViewImports”的继承?
最佳答案
我将这个 self 回答作为一种临时解决方法发布(尽管仍然希望有一个,它会解释发生了什么,以及在官方资源/文档中的何处可以找到它)。
看起来它并不比编译的局部 View 复杂,它使用编译的 _ViewImports.cshtml
,对于任何未编译的,它都需要 _ViewImports.cshtml
的副本在其默认位置,Pages\
文件夹。
在我的例子中是这样的
\Pages\Partial\
_Application.cshtml
\Pages\
_ViewImports.cshtml
\
AsonCore.Views.dll
事实证明,可以将任何其他已编译的主视图文件(在发布时未删除,就像我对部分 View 所做的那样),将其复制到 Pages\
文件夹,如果需要编辑它,它会重新加载并覆盖编译后的文件,它位于 views.dll
虽然上面单独会呈现一个异常(当试图在运行时执行未编译的 View 时),但是在这个答案的帮助下它起作用了,它说:
To correct this, you must to publish folder add refs subfolder with some runtime assemblies. This refs folder is normaly created if you do publish project with
MvcRazorCompileOnPublish
set tofalse
. So you must one time do publish without precompilation to another folder and copy this refs subfolder from there.
请注意,除了在 Core 2.2 中使用此 refs 文件夹外,可能还有其他方法,如果有人知道,请随时用它编辑我的答案
编辑 - ASP.NET Core 3.1
说到 refs
使用 3.1 的文件夹,只需执行此操作即可在发布时复制运行时文件:
在startup
类
services.AddRazorPages()
.AddRazorRuntimeCompilation();
在.csproj
文件
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.4" />
关于c# - 未编译的局部 View 不继承自 ViewImports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56391393/
我将 View 的一部分移动到局部 View 中。 _ViewImports.cshtml @using AsonCore.Helpers @using AsonCore.Models @namesp
我正在编写帮助程序类并注入(inject)到 _ViewImports 中 @inject HtmlHelperInject.TestHelper TestHelper 并在 Startup.Conf
我是一名优秀的程序员,十分优秀!