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