让我解释一下我的问题:
我使用Entity Framework创建了四个作为对象的表。 我已经向实体模型添加了一个存储库类来添加/删除/获取/查询我需要的东西。
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;
}
}
依旧......
我的索引视图分为一些部分视图,例如:
@{
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")
假设在我的_PartialOtherView中我有一个表单,我想输入一些信息并将其添加到数据库中:
@model yplaylist.Models.TopTenFav
<div id="otherFavContainer">
<div id="txtYoutubeLinkContainer">
@using (Html.BeginForm("AddTopTenFav", "Home", FormMethod.Post, new { id = "AddTopTenFavForm" }))
{
<span id="youTubeLinkSpan">Youtube Link</span>
<div>
@Html.TextBoxFor(modelItem => modelItem.YoutubeLink, new { id ="youTubeLinkTxt" })
</div>
<span id="youTubeNameSpan">Song Title</span>
<div>
@Html.TextBoxFor(modelItem => modelItem.Title,new{id="youTubeNameTxt"} )
</div>
<button type="submit" name="btnCreateComment" value="">submit</button>
}
</div>
</div>
</div>
此请求转到控制器:
public class HomeController : Controller
{
private YPlaylistRepository repository = new YPlaylistRepository();
public ActionResult Index()
{
var topTenList = repository.FindAllTopTen().ToList();
return View(topTenList);
}
public ActionResult About()
{
return View();
}
public ActionResult Users()
{
return View();
}
[HttpPost]
public ActionResult AddTopTenFav(TopTenFav topTen)
{
topTen.Date = DateTime.Now;
topTen.UserName = User.Identity.Name;
repository.AddTopTen(topTen);
repository.Save();
return RedirectToAction("Index");
}
}
当我所有的部分视图都处理不同的模型时,我如何解决将正确的模型传递给我的索引视图的问题..我试图创建一个封装我所有模型的类,但这只是进一步创建的问题,因为我的实体对象返回了我的“HomeViewModel”中找不到的特定类型,例如对象列表等等
这真让我感到困惑,我怎么解决这个问题,我相信它可以以某种方式完成,但最新方向是什么?提前谢谢
答案 0 :(得分:2)
我认为(根据我对问题的理解)你需要的是将视图模型传递给包含任何其他模型的索引视图,例如:
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模型传递给操作。