4

在我的起始页上,我想显示我在其他页面上拥有的几个不同列表中的第一个项目 - 有点像 SO 上的“最近”页面显示最近的帖子和最近的评论。就我而言,我想在留言簿中列出最近的两个帖子,以及下一个即将发生的事件。

为了做到这一点,我怎样才能将几个模型对象传递给我的视图?甚至可能吗?如果没有,应该怎么做?

4

1 回答 1

11

tvanfosson 的解决方案的替代方案是创建一个强类型视图,以便您获得 cvompile-time 检查和更少的“魔术字符串”。

例子...

假设您有课程:

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 属性将是传入 viewdata 参数的实例到您的 VIew 方法中控制器。

<%@ 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>

当然,这只是一个演示,我不会逐字使用此代码。

于 2009-02-05T01:43:02.477 回答