0

私はビューコンポーネントをかみそりのページに置き換えようとしていますが、モデルが渡される予定であるため、かみそりのページを読み込むことはできないようですかみそりページのモデルは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})を試しましたが、同じエラー結果が出ました。

カミソリのページを既存のビューに読み込むにはどうすればよいですか?

+0

ビューモデルは '_BackgroundModel'ですが、 'int'値でビューを呼び出しています。 '@await Html.PartialAsync("/Pages/Client/_Background.cshtml "、新しい_BackgroundModel())'のようなものを試してみてください。 – Azim

+0

@Azimモデルは、呼び出しビューで渡されないコードビハインドファイル内の 'OnGetAsync'内に作成する必要があります。ページの読み込みには、ページが読み込まれたときに、この値が 'OnGetAsync(int id)'に渡されます。モデルではなく呼び出し側のビューからint値を渡します。 – OjM

+0

モデルを部分ビューに渡す場合、なぜそれに 'id'を渡す必要があるのですか? – Saineshwar

答えて

0

マイクロソフトではこれが達成できないことを確認しており、ひらめきページはビューコンポーネントの代替品として使用できません。

>

MS docs

@RickAndMSFT moderator15時間前 あなたがページにリダイレクトすることができ、またはあなたがコアビューを作ることができ@OjM ...にコードを自分のドキュメントのコメントを参照してください部分的で、両方から呼び出します。

ページは、パーシャルまたはビューコンポーネントの代替物ではありません。

関連する問題