2つのビュー: 1)登録 - ユーザーアカウントを作成するためのプライマリビュー 2)カテゴリ - ビューを表示するコンボフィールドにカテゴリを動的に追加する部分的なビュー。異なるモデルの強く型付けされた部分図をレンダリングする
登録中に[カテゴリの追加]をクリックすると、カテゴリビューがjQueryダイアログとして表示されます。このビューには、名前や説明などの新しいカテゴリを作成するために必要なフィールドが表示されます。このため、別のモデルがあります。
例外の詳細:いくつかの検証エラーがあるかどう
GET]ページで、すべてが正常に動作しますが、しかし、ポストの上に、ページが補正を行うためのユーザプロバイダ値をリロードする必要があり、その代わりに次のエラーがスローされますと、System.InvalidOperationException :辞書に渡されたモデルアイテムは 'Delight.Models.User'タイプですが、この辞書には 'Delight.Models.Category'タイプのモデルアイテムが必要です。
私は(それは部分図に使用するモデルオブジェクトを指定していないので)次の文を使用して、この問題を引き起こしている可能性がありますことを考えた:
@Html.Partial("CreateCat")
ただし、以下の過負荷に頼ることはしませんでした
@Html.Partial("CreateCat", null, null)
上記の2番目のパラメータ(null値)は、モデルオブジェクトを表します。
はしかし、予想外に次のように私の問題を解決しました:
@Html.Partial("CreateCat", new Category(), null)
はなぜ空のオブジェクトは、この場合には機能していますが、nullではないですか?
異なるモデルタイプの強く型付けされた部分表示をレンダリングする他の方法がありますか。
これはMVCパターンが実際に使用される方法ではないと思います...あなたの部分的なビューは、あなたのページまたは別のページに統合されるべきでしょうか? –
@ジェレミー私は他の選択肢がありません。カテゴリはajaxを介して追加されており、私はこれを行うための新しいブラウザウィンドウを開くのは好きではありません。実際には、いかなるポストバックデータも必要としません。 btw、ここでMVCに関する問題は何ですか? MVCは、さまざまなコンポーネントをどのように構造化するかについて、私たちにより多くの制御を与えるものではありませんか? –
ヌルオブジェクトをビューに渡すと、ヌルオブジェクトが最初にチェックされない場合、ビューがクラッシュします。 Html.Partial( "CreateCat")を呼び出すと、親モデル(Models.User)を渡しています。新しいカテゴリ()で呼び出すと、コントローラを作成するために空の新しいカテゴリを返すときに、コントローラが行うことが基本的になります。編集:これは私がMVCに新しいので、間違っているかもしれませんが、これは私が理解しているものです。 – Jack