0

現在、Web サイトのすべてのページで使用される _layout.cshtml があります。
popin として表示される各ページにフォームを配置する必要があります。
そこで、対応する ViewModel を使用して新しい PartialView (フォームのコンテンツ) を作成し、_layout.cshtml で呼び出しました。

ただし、レイアウトを使用するページのViewModelと新しいフォームで使用されるViewModelの間にモデルの競合があります(同じビューに対して2つのモデルを直接持つことはできないため)。

ディクショナリに渡されたモデル アイテムのタイプは 'XXX' ですが、このディクショナリにはタイプ 'YYY' のモデル アイテムが必要です。

この競合なしで _layout にフォームを含めるにはどうすればよいでしょうか?

4

1 に答える 1

1

以下は、すべてのページにサイドバーを付けて機能しました。

  1. 部分ビューのコントローラーを作成する
  2. そのコントローラーで、返したいビューのメソッドを作成し、必ず[ChildActionOnly]フィルターを使用してください

    public class PartialController : Controller
    {
        [ChildActionOnly]
        public PartialViewResult Alerts()
        {
    
            return PartialView("Alerts", messages);
        }
    }
    
  3. _layout ビューには、次のものがあります。

    @Html.Action("Alerts", "Partial")
    

    (@Html.RenderPartial または @Html.Partial の代わりに)

  4. ビューに必要なものはすでに揃っているようです。

これをフォームで使用したことはありませんが、同様に機能するはずです。お役に立てれば。

于 2012-08-03T14:01:41.630 に答える