_Create.cshtml (スニペット)
@model MC.Models.AdminViewModels.NewUserViewModel
@await Html.PartialAsync("_ModalHeader", new ModalHeader() { Title= "New User"})
<div class="modal-body">
<form asp-action="Create">
<div class="form-horizontal">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="NewUser.FirstName" class="col-md-4 control-label">First Name</label>
<div class="col-md-8">
<input asp-for="NewUser.FirstName" class="form-control" />
<span asp-validation-for="NewUser.FirstName" class="text-danger"></span>
</div>
</div>
Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException: 1 つ以上のコンパイル エラーが発生しました: C:\Projects\Webs\MC\Areas\Admin\Views\Shared_ModalFooter.cshtml(1,3): エラー RZ9999: 'モデル'ディレクティブは、行の先頭に表示する必要があります。Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndEmit (文字列の相対パス) で Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CreateCacheEntry (文字列の正規化されたパス) で
_ModalFooter.cshtml (_ModalHeader の内容とほぼ同じ例)
@model MC.Models.ModalFooter
<div class="modal-footer">
<button data-dismiss="modal" id="@Model.CancelButtonID" class="btn btn-default" type="button">@Model.CancelButtonText</button>
@if (!Model.OnlyCancelButton)
{
<button class="btn btn-success" id="@Model.SubmitButtonID" type="submit">
@Model.SubmitButtonText
</button>
}
</div>
これは私をループに陥れました。Asp.net Core 2.0 は 1.1.2 で問題なく動作しますが、これはパーシャル内のパーシャルごとにスローされ、モーダル使用のためにセットアップされます。エラー RZ9999 は明らかにどこにも文書化されていません。もちろん、ストレート html のパーシャルを取り出してもエラーは発生しませんが、1 行と 3 ~ 4 行のコードであることが想像できます。Asp.net Core MVC 1.1 から 2.0 への変換のどこかで何かが欠けていると思います。 また、これはパーシャル内のパーシャルです。
注: リリース日 NuGet には v2 用の EF ツール パッケージがなかったので、*.csproj で 'Microsoft.AspNetCore.All' パッケージ プルを使用しています。