Asp.net mvc 在Asp.net MVC 3中将多个模型传递给视图和局部视图

Asp.net mvc 在Asp.net MVC 3中将多个模型传递给视图和局部视图,asp.net-mvc,asp.net-mvc-3,entity-framework,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,让我解释一下我的问题: 我使用实体框架创建了四个表作为对象。 我在实体模型中添加了一个repository类来添加/删除/获取/查询我需要的东西 public class YPlaylistRepository { private aspnetdbEntities entities = new aspnetdbEntities(); // // Query Methods public IQueryable<Song> FindAllSongs()

让我解释一下我的问题:

我使用实体框架创建了四个表作为对象。 我在实体模型中添加了一个repository类来添加/删除/获取/查询我需要的东西

 public class YPlaylistRepository
{

    private aspnetdbEntities entities = new aspnetdbEntities();
    //
    // Query Methods
    public IQueryable<Song> FindAllSongs()
    {
        return entities.Songs;
    }

    public IQueryable<TopTenFav> FindAllTopTen()
    {
        return entities.TopTenFavs;
    }

    public IQueryable<Genre> FindAllGenres()
    {
        return entities.Genres;
    }
 }

当我的所有PartialView都处理不同的模型时,我如何解决将正确的模型传递到索引视图的问题。。我试图创建一个封装所有模型的类,但这只会产生更多的问题,因为我的实体对象返回了在“HomeViewModel”中找不到的特定类型,例如对象列表等等

这真的让我困惑,我该如何解决这个问题,我相信这是可以做到的,但正确的方法是什么?提前感谢

我认为(根据我对问题的理解),您需要的是将视图模型传递给包含任何其他模型的索引视图,例如:

 @{
ViewBag.Title = "Home Page";
  }

 @Html.Partial("_PartialPlayer")
 <div>

  @Html.Partial("_PartialOtherFav")
 <div id="topTenContainer" style="float: left; width:450px;margin-top:49px;">
 @Html.Partial("_PartialTopTenFav")
 @Html.Partial("_PartialCurrentFav")
public class IndexModel
{
    public TopTenFav TopTenFavourites { get; set; }

    ...
}
然后在Index()操作中返回视图模型:

public ActionResult Index()
{
    var topTenList = repository.FindAllTopTen().ToList();
    return View(new IndexModel() { TopTenFavourites = topTenList});
}
然后视图会将此模型传递到局部视图或从局部视图传递到局部视图,如下所示:

@Html.Partial("_PartialTopTenFav", Model.TopTenFavourites)

在部分视图中提交表单时应调用AddTopTenFav(),并将TopTenFav模型正确传递给操作。

“我的实体对象返回了在我的“HomeViewModel”中找不到的特定类型,如对象列表等”这意味着什么?公共操作结果索引(){var topTenList=repository.FindAllTopTen().ToList();返回视图(topTenList);}我正在返回一个对象列表,但这仅适用于我的一个PartialView,其他PartialView将需要其他数据,我将如何解决此问题?我无法直接将结果发送到我的PartialView?仅我的主视图我猜这不是真的!您可以“返回PartialView(模型);”在你的控制器中,但我返回部分视图作为主视图,这意味着只有部分视图是可见的,我想同时返回我所有的部分视图,只返回索引视图理论上这正是我想做的,但当我尝试这样做时,你知道整个故事:D谢谢,我会给它一个ShotTopTenFavorites=topTenListi无法显式地将topTenList转换为object,因为它是一个对象列表,知道如何解决它吗?public IEnumerable topTenFav{get;set;}好的,我更改了模型中的类型,所以现在应该可以了
public ActionResult Index()
{
    var topTenList = repository.FindAllTopTen().ToList();
    return View(new IndexModel() { TopTenFavourites = topTenList});
}
@Html.Partial("_PartialTopTenFav", Model.TopTenFavourites)