视图模型和局部视图问题MVC#

视图模型和局部视图问题MVC#,c#,asp.net-mvc,asp.net-mvc-partialview,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Asp.net Mvc Partialview,Asp.net Mvc Viewmodel,我对C#/MVC还相当陌生,并且一直在理解一些基本的东西,所以也许一两个乐于助人的灵魂可以帮助我。 我试图解决的是Viewmodels和partials视图的概念。 我想在viewmodel中创建一个包含所有书籍的列表,并将其解析为partialView,这是一个好方法还是应该为“bookshelf”创建一个ordenary类 无论如何,我不能让我的“书架”显示在我的局部视图中,并且已经得到了完全不同的错误,所以我有点不知道从哪里开始故障排除 下面的代码给出了以下错误atm:错误CS1001:需

我对C#/MVC还相当陌生,并且一直在理解一些基本的东西,所以也许一两个乐于助人的灵魂可以帮助我。 我试图解决的是Viewmodels和partials视图的概念。 我想在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>
}
//在我的模型文件夹中
公共课堂用书
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共整型页{get;set;}
}
//在我的ViewModel文件夹中
公共类书架
{
公共列表书籍{get;set;}
}
//控制器动作
公共类书架控制器:控制器
{
公共行动结果列表簿()
{
Bookshelfvvm Viewmodel=新书架fvm();
Viewmodel.Books=新列表()
{
新书
{
ID=1,
Name=“如何……”,
页数=312
},
新卡()
{
ID=2,
Name=“如何……两个”,
页数=512
}
};
返回视图(“_ListBook”,Viewmodel);
}
}
//看法
@model How.ViewModels.bookshelfm
@{
ViewBag.Title=“Bookshelf”;
}
乱数假文

@Html.Partial(“\u ListBook”)

*指向此处时出错 //局部视图 @model How.ViewModels.bookshelfm @foreach(How.Models中的var手册) { @模型书 }
您需要将模型传递到局部视图。而不是:

@Html.Partial("_ListBook")
你需要:

@Html.Partial("_ListBook", Model)
虽然有点令人困惑,为什么控制器操作也返回相同的局部视图。不知道您的理由是什么,部分视图通常用于呈现重复的页面部分或通过ajax加载的页面部分

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

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

如果出现语法错误,请仔细检查razor代码,
How.Models中的var手册。
删除最后一个句点。