私のスタート ページでは、他のページにあるいくつかの異なるリストの最初の項目を表示したいと思います。SO の「最近の」ページのように、最近の投稿と最近のコメントの両方が表示されます。私の場合、ゲストブックの最新の 2 つの投稿と、次の予定のイベントを一覧表示したいと考えています。
これを行うには、いくつかのモデル オブジェクトをビューに渡すにはどうすればよいですか? それは可能ですか?そうでない場合は、どのように行う必要がありますか?
私のスタート ページでは、他のページにあるいくつかの異なるリストの最初の項目を表示したいと思います。SO の「最近の」ページのように、最近の投稿と最近のコメントの両方が表示されます。私の場合、ゲストブックの最新の 2 つの投稿と、次の予定のイベントを一覧表示したいと考えています。
これを行うには、いくつかのモデル オブジェクトをビューに渡すにはどうすればよいですか? それは可能ですか?そうでない場合は、どのように行う必要がありますか?
tvanfosson の解決策に代わるものは、厳密に型指定されたビューを作成して、cvompile 時間のチェックを取得し、「魔法の文字列」を少なくすることです。
例...
次のクラスがあるとします。
public class FrontPageViewData
{
public List<Post> Posts { get; set; }
public List<Comment> Comments { get; set; }
}
次に、コントローラーで...
public ActionResult Index()
{
FrontPageViewData viewData = new FrontPageViewData();
viewData.Posts = DB.Posts.ToList();
viewData.Comments = DB.Comments.ToList();
return View(viewData);
}
そして、最後に...あなたの見解で。これにより、ビュー登録ラインをセットアップしてそれを使用する場合、渡されたビュー データにインテリセンスでアクセスできるようになります (その部分に注意してください。つまり、Model プロパティは、渡されたビューデータ引数のインスタンスになり、コントローラ。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<FrontPageViewData>" %>
<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" runat="server">
<%= Model.Posts.Count().ToString(); %>
<%= Model.Comments.Count().ToString(); %>
</asp:Content>
もちろん、これは単なるデモであり、このコードをそのまま使用するつもりはありません。