特定のモデルを扱う部分的なビューがあります。 そのモデルに関する参照がないビューから、部分ビューにどのように渡すことができますか?強く型付けされた部分図にモデルを渡す方法
私の部分図があります:あなたがモデルにあなたの視野には何の言及もしていないと仮定すると
@Html.Partial("CommentForm", Model.NewsComments.SingleOrDefault()) //does not work
特定のモデルを扱う部分的なビューがあります。 そのモデルに関する参照がないビューから、部分ビューにどのように渡すことができますか?強く型付けされた部分図にモデルを渡す方法
私の部分図があります:あなたがモデルにあなたの視野には何の言及もしていないと仮定すると
@Html.Partial("CommentForm", Model.NewsComments.SingleOrDefault()) //does not work
、あなたは1を次の操作を行うことができます:私はから呼び出すことができますどのよう
@model MyNS.Models.NewsComment
:
@{
var repo = new Models.MyRepo();
var partialModel = repo.GetAll();
}
@Html.Partial("CommentForm", partialModel)
これはASP.NET MVCのSeperation of Concerns
理論に完全に反するものです。
私は、モデルビュー(イベント内で使用しない場合はイベント)をビューに渡し、ビューからパーシャルに渡すことです。そうすれば、コントローラからのデータアクセスがより良いアプローチになります。
UPDATE
私はちょうどあなたがエラーに関するコメントを見てきました。より良いアプローチを次のようにあなたがどうなるのか、このケースでは(私は上記示された最初のケースでも、このために動作します)です。
次のようにViewModelにを作成します。その後、
public class MyViewModel {
public MyNS.Models.News News {get; set;}
public MyNS.Models.NewsComment NewsComment {get; set;}
}
そして、それを渡すをあなたのビューは次のように次のよう
がvar viewModel = new MyViewModel();
viewModel.News = repo.GetNews();
viewModel.NewsComment = repo.GetNewsComment();
retun View(viewModel);
は、あなたのビュー上で作業:
@Html.Partial("CommentForm", Model.NewsComment)
このエラーに応じて、モデルのNewsCommentsプロパティのタイプはIEnumerable<News>
ですが、IEnumerable<NewsComment>
である必要があります。LINQクエリを使用して、モデルのNewsCommentsプロパティに誤ったselectステートメントを設定している可能性があります。
何らかのエラー(もしあれば)がありますか? – scartag
このエラーは次のようになります。 "辞書に渡されたモデルアイテムは 'MyNS.Models.News'タイプですが、この辞書には 'MyNS.Models.NewsComment'タイプのモデルアイテムが必要です。私はNewsモデルから呼び出しますが、私は部分ビューからNewsCommentアイテムを挿入する必要があります – Cris
「NewsComments」プロパティは「NewsComment」ではなく「News」としてタイプされているようです。これをチェックしたり、メインビュー(NewCommentsプロパティを持つクラス)でモデルのコードを投稿できますか? –