私はビューコンポーネントをかみそりのページに置き換えようとしていますが、モデルが渡される予定であるため、かみそりのページを読み込むことはできないようですかみそりページのモデルはOnGetAsyncメソッドで宣言する必要があります。ここに私のコードがある...かみそりのページをかみそりのビューに読み込む方法
レイザーページ
@page "{id:int}"
@model _BackgroundModel
<form method="POST">
<div>Name: <input asp-for="Description" /></div>
<input type="submit" />
</form>
カミソリコードビハインドページ
public class _BackgroundModel : PageModel
{
private readonly IDataClient _dataClient;
public _BackgroundModel(IDataClient dataClient)
{
_dataClient = dataClient;
}
[BindProperty]
public BackgroundDataModel Background { get; set; }
public async Task OnGetAsync(int id)
{
Background = await _dataClient.GetBackground(id);
}
public async Task OnPostAsync()
{
if (ModelState.IsValid)
{
await _dataClient.PostBackground(Background);
}
}
}
レイザービュー
<div class="tab-pane fade" id="client-background-tab">
<div class="row">
<div class="col-sm-12">
@await Html.PartialAsync("/Pages/Client/_Background.cshtml", new { id = 1 })
</div>
</div>
</div>
ページ読み込みエラー
と、InvalidOperationException:モデルアイテム ViewDataDictionaryに渡されたが、型 '<> f__AnonymousType0`1 [可能System.Int32]' である が、これViewDataDictionaryインスタンスは、タイプ のモデルアイテムが必要ですこの例では「WebApp.Pages.Client._BackgroundModel」
(MSごとにそのドキュメント内アプローチを推奨されるように)モデルは、ページが要求されたときに実行されるべきOnGetAsyncメソッド内に設定されています。私も@await Html.RenderPartialAsync( "/ Pages/Client/_Background.cshtml"、new {id = 1})を試しましたが、同じエラー結果が出ました。
カミソリのページを既存のビューに読み込むにはどうすればよいですか?
ビューモデルは '_BackgroundModel'ですが、 'int'値でビューを呼び出しています。 '@await Html.PartialAsync("/Pages/Client/_Background.cshtml "、新しい_BackgroundModel())'のようなものを試してみてください。 – Azim
@Azimモデルは、呼び出しビューで渡されないコードビハインドファイル内の 'OnGetAsync'内に作成する必要があります。ページの読み込みには、ページが読み込まれたときに、この値が 'OnGetAsync(int id)'に渡されます。モデルではなく呼び出し側のビューからint値を渡します。 – OjM
モデルを部分ビューに渡す場合、なぜそれに 'id'を渡す必要があるのですか? – Saineshwar