这篇文章是关于MVC MusicStore,MVC 3,可以从MSDN网站免费获得 我不确定这是cshtml文件还是cs文件中的问题。基本上我正在尝试为StoreManagerController实现分页。我看了http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/,http://weblogs.asp.net/rajbk/archive/2010/05/08/asp-net-mvc-paging-sorting-filtering-using-the-mvccontrib-grid-and-pager.aspx和http://weblogs.asp.net/shijuvarghese/archive/2010/10/08/using-the-webgrid-helper-in-asp-net-mvc-3-beta.aspx我没有得到最终结果。有人可以帮助我吗?我认为它与storemanagercontroller中的类有关,或者我需要创建另一个类,或者可能在@model IEnumerable中记住我也有Helper.cs文件?
输出应该是......
艺术家 - 对于那些即将摇滚的人我们向你致敬
标题 - AC / DC
类型 - 摇滚
等
然后分页显示在屏幕的底部 1 2 3 4 5>
但我得到了一个输出......
艺术家 - MvcMusicStore.Models.Artist
标题 - 对于那些即将摇滚的人我们向你致敬
类型 - MvcMusicStore.Models.Genre
等
然后分页显示在屏幕的底部 1 2 3 4 5>
StoreManagerController语法为
public ActionResult Index()
{
var albums = storeDB.Albums
.Include("Genre").Include("Artist")
.ToList();
return View(albums);
}
在cshtml(StoreManagerController - > view->强类型的专辑类)中,我实现了以下代码......
@model IEnumerable<MvcMusicStore.Models.Album>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@Html.ActionLink("Create New", "Create")
@{
var grid = new WebGrid(source: Model,
defaultSort: "Artist",
rowsPerPage: 10);
}
<div id="grid">
@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns(
grid.Column("Artist"),
grid.Column("Title"),
grid.Column("Genre")
)
); // ; was missing.
答案 0 :(得分:1)
问题在于流派和艺术家是实体。您可以像这样创建一个ViewModel:
public class AlbumViewModel
{
public string Artist { get; set; }
public string Title { get; set; }
public string Genre { get; set; }
}
并将其填充到控制器中,如下所示:
var albums = from a in storeDB.Albums
select new AlbumViewModel{
Artist = a.Artist.Name,
Title = a.Title,
Genre = a.Genre.Name };
并且不要忘记在视图中设置模型类型:
@model IEnumerable<MvcMusicStore.Models.AlbumViewModel>