【发布时间】:2011-11-03 19:50:02
【问题描述】:
让我解释一下我的问题:
我有四个使用实体框架创建为对象的表。 我在实体模型中添加了一个存储库类来添加/删除/获取/查询我需要的东西。
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”中找不到的特定类型,例如对象列表等
这真的让我很困惑,我将如何解决这个问题,我确信它可以以某种方式完成,但是正确的方法是什么?提前致谢
【问题讨论】:
-
“我的实体对象返回了在我的“HomeViewModel”中找不到的特定类型,例如对象列表等”这是什么意思?
-
public ActionResult Index() { var topTenList = repository.FindAllTopTen().ToList();返回视图(topTenList); }
-
我正在返回一个对象列表,但这仅适用于我的一个局部视图,其他局部视图将需要其他数据,我将如何解决这个问题?我不能直接将结果发送到我的部分视图?我猜只有我的主要观点
-
这不是真的!你可以“返回 PartialView(model);”在你的控制器中
-
但是我将局部视图作为主视图返回,这意味着只有局部视图可见,我想同时返回所有局部视图,只需返回索引视图
标签: asp.net-mvc asp.net-mvc-3 entity-framework