C# 引入viewmodel会使应用程序崩溃
我试着自学C#和MVC3 我通过创建一个简单的博客应用程序来学习。我被困在博客的细节页面。此页面显示文章,工作正常-即显示文章和文章上的评论。但是,我想添加一个表单来添加新的注释 我认为这样做的方法是创建一个包含blog和comment类的viewmodel,然后我应该能够创建一个comment表单,该表单调用comment controller的create操作 但是,当我这样做时,博客显示页面不会显示,因为它需要“BlogDetailViewModel”类型的模型。我猜这是因为“Blog”控制器的“Details”操作将“Blog”模型传递给视图,而不是“blogdailviewmodel”。如何更正此错误 这是处理这个问题的最好办法吗 我将详细说明以下所有代码: 博客控制器-详细信息方法C# 引入viewmodel会使应用程序崩溃,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我试着自学C#和MVC3 我通过创建一个简单的博客应用程序来学习。我被困在博客的细节页面。此页面显示文章,工作正常-即显示文章和文章上的评论。但是,我想添加一个表单来添加新的注释 我认为这样做的方法是创建一个包含blog和comment类的viewmodel,然后我应该能够创建一个comment表单,该表单调用comment controller的create操作 但是,当我这样做时,博客显示页面不会显示,因为它需要“BlogDetailViewModel”类型的模型。我猜这是因为“Blog”控
public ViewResult Details(int id)
{
Blog blog = db.Blogs.Find(id);
return View(blog);
}
Blog.cs
public class Blog
{
public int BlogID { get; set; }
public string Title { get; set; }
public string Writer { get; set; }
[DataType(DataType.MultilineText)]
public string Excerpt { get; set; }
[DataType(DataType.MultilineText)]
public string Content { get; set; }
[DataType(DataType.Date)]
public DateTime PublishDate { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
BlogDetailViewModel.cs
public BlogDetailViewModel
{
public Blog Blog{ get; set; }
public Comment comment{ get; set; }
}
博客详细信息视图
@model NPLHBlog.ViewModels.BlogDetailViewModel
@{
ViewBag.Title = @Model.Blog.Title;
}
我试图在博客详细信息视图之外对所有内容进行评论,只保留标题。然而,即使这样也不行
任何帮助都将不胜感激。您的视图将强类型模型设置为ViewModel类,但您的操作仅返回一个博客对象。要修复错误,请执行以下操作之一:
- 创建一个接受博客对象的新视图
- 修改视图以接受博客对象
- 修改操作以实例化ViewModel对象,并设置该对象上的变量(博客、评论)以将其传递给视图
所有这些都是简单的选项,因此这取决于您。您的视图将强类型模型设置为ViewModel类,但您的操作仅返回博客对象。要修复错误,请执行以下操作之一:
- 创建一个接受博客对象的新视图
- 修改视图以接受博客对象
- 修改操作以实例化ViewModel对象,并设置该对象上的变量(博客、评论)以将其传递给视图
所有这些都是简单的选项,因此取决于您。在控制器中传递给
视图()
的类型必须与视图中的@model
类型匹配
public ViewResult Details(int id)
{
Blog blog = db.Blogs.Find(id);
BlogDetailViewModel viewModel = new BlogDetailViewModel {Blog = blog, Comment = ""};
return View(viewModel);
}
在控制器中传递给
View()
的类型必须与视图中的@model
类型匹配
public ViewResult Details(int id)
{
Blog blog = db.Blogs.Find(id);
BlogDetailViewModel viewModel = new BlogDetailViewModel {Blog = blog, Comment = ""};
return View(viewModel);
}