Viewmodels和PartialView问题MVC C#

时间:2013-12-18 20:20:49

标签: c# asp.net-mvc asp.net-mvc-partialview asp.net-mvc-viewmodel

我对C#/ MVC相当新,并且不了解一些基本的东西,所以也许一两个有用的灵魂可以帮助我。 我想要解决的是Viewmodels和partials View的概念。 我想创建一个包含我的viewmodel中所有书籍的列表并将其解析为partialView,这是一个好方法还是我应该为'bookshelf'创建一个ordenary类?

无论如何,我不能在我的部分视图中显示我的“书架”,并且出现了完全不同的错误,所以我对从哪里开始排除故障感到有点迷失。

代码下方给出了以下错误atm:错误CS1001:预期标识符

//In my Model folder
Public class Book
{
public int ID       { get; set; }
public string Name  { get; set; }
public int Pages    { get; set; }
}

//In my ViewModel folder
public class BookshelfVM
{
public List<Book> Books { get; set; }
}

//Controller action

public class BookshelfController : Controller
{
public ActionResult ListBook()
{
  BookshelfVM Viewmodel = new BookshelfVM();

        Viewmodel.Books = new List<Book>()
        {
            new Book()
            {
                ID = 1,
                Name = "How to...",
                Pages = 312
            },
            new Card()       
            {
                ID = 2, 
                Name = "How to... two",  
                Pages = 512
            }
        };
        return View("_ListBook", Viewmodel);
}
}

//View
@model How.ViewModels.BookshelfVM
@{
ViewBag.Title = "Bookshelf";
}
Lorem ipsum
<div>
    <p>
        @Html.Partial("_ListBook")</p> *error pointing here
</div>

//Partial View
@model How.ViewModels.BookshelfVM

@foreach (var Book in How.Models.)
{
<div>

    @Model.Book
</div>
}

1 个答案:

答案 0 :(得分:0)

您需要将模型传递给局部视图。而不是:

@Html.Partial("_ListBook")

你需要:

@Html.Partial("_ListBook", Model)

虽然为什么你的控制器操作也返回相同的局部视图有点令人困惑。不知道你的推理是什么,部分视图通常用于呈现重复的页面的某些部分或通过ajax加载的页面的某些部分。

foreach循环也是错误的。您需要以下内容:

@foreach (var book in Model.Books)
{
   <div>@book.Name</div>
}