2011-10-26 8 views
1

モデル@ model.topicsを使用するmasterpageがあります。モデル@ model.ContactUsModelを使用する部分ビューを作成しました。マスターページでそのビューをレンダリングしていますが、 辞書に渡されたモデルアイテムは 'Nop.Web.Models.Common.topics'タイプですが、この辞書には 'Nop.Web.Models.ContactUsModel'タイプのモデルアイテムが必要です。Razorを使用して部分的なビューを作成する

私が使用して部分的なビューを呼び出しています:ここで私が間違っているの何

@Html.Partial("Contact") 

任意の提案やアドバイス

+0

どのように部分ビューを呼び出していますか? – Frederiek

+0

@ Html.Partial( "Contact") –

答えて

2

は、アクションがためPartialViewを返すことがある

@Html.Action("Contact") 

を使用してみてくださいこれはうまくいく。あなたは右のモデル

public ActionResult Contact() 
{ 
    blabla, some code 
    return PartialView(myContactUsModelObject); 
} 

@Html.Partial()部分ビューをレンダリングし、それをレンダリングすることができます。
は、コントローラでアクションを呼び出しません。
あなたはまだこのようなこの方法でモデルを与えることができます:あなたはそれを使用してモデルを与えていない場合は@Html.Partial("Contact",someObject)
、ページモデルは、デフォルト
して説明すると、それはあなたのコード

で起こったものです@Html.Action()コントローラのアクションを呼び出します。
そして、どんな種類の結果を与えるのかは決まります。

私はこれが役立つことを望みます。

+0

パブリックアクションメソッド 'Contact'がコントローラ 'Nop.Web.Controllers.TopicController'に見つかりませんでした。 –

+0

私はコントローラーを持っていますが、 –

+0

@MrA:確かにあなたは正しいconrtollerにいますか? @ Html.Action( "Contact"、 "Controller");これを指定する必要があります。 – Frederiek

2

Partialはビューをレンダリングします。 ActionはControllerを呼び出し、Viewをレンダリングします。したがって、あなたのビューにViewBagのようなコントローラが提供するコードが必要な場合は、Action()を呼び出す必要があります。それ以外の場合はView()を呼び出します。

関連する問題