gpt4 book ai didi

asp.net-mvc - 如何在同一 Controller ( Entity Framework )中使用两个模型并在不同的操作中使用每个模型?

转载 作者:行者123 更新时间:2023-12-02 14:44:16 25 4
gpt4 key购买 nike

到目前为止我已经制作了一个模型并使用 EF 添加了 Controller ,并制作了一些书籍列表

public class Books
{
public string ImageUr { get; set; }
public string BookTitle { get; set; }
public string ShortDescription { get; set; }
public decimal Price { get; set; }
public string Author { get; set; }
public int ID { get; set; }
}

public class BooksDBContext : DbContext
{
public DbSet<Books> Book { get; set; }
}

我在此操作中显示该列表:

 public ActionResult Books()
{
return View(db.Book.ToList());
}

我的问题是如何制作另一个模型或数据库来传递到此操作中(例如有关新书新闻的 View 页面):

public ActionResult News()
{
View(db.News.ToList());
}

新闻的模型是这样的:

public class News
{
public string Title{ get; set; }
public string Subtitle { get; set; }
public string Content{ get; set; }
public int ID { get; set; }
}

最佳答案

也许你可以尝试一下 View 模型。当我开始学习 ASP.NET MVC 时,我学习了使用数据教程,并了解了很多有关 Entity Framework 和 ASP.NET MVC 的知识!我会给你一个链接。 ASP.NET working with data

对于您的解决方案,一些代码:

更新您的类中需要一些虚拟属性来定义关系:我们有一对多关系,因为书籍可以包含更多新闻项,而新闻只能包含一本书。

public class Book //change your class name to book 
{
public string ImageUr { get; set; }
public string BookTitle { get; set; }
public string ShortDescription { get; set; }
public decimal Price { get; set; }
public string Author { get; set; }
public int ID { get; set; }
public int NewsId { get; set; }

public virtual ICollection<News> News { get; set; }
}

public class News
{
public string Title{ get; set; }
public string Subtitle { get; set; }
public string Content{ get; set; }
public int ID { get; set; }
public int BookId {get; set; }

public virtual Book Book { get; set; }
}

如果您想使用 View 模型,请添加一个名为 viewmodels 的新文件夹并添加一个新类

public class BookNewsViewmodel //viewmodel of book and News :)
{
public IEnumerable<Book> Books { get; set; }
public IEnumerable<News> News { get; set; }
}

在 DbContext 中

namespace yourProject.DAL
{
public class yourProjectContext : DbContext //this is a DbContext!
{

public yourProjectContext () : base("yourProjectContext") //A constructor
{
}

public DbSet<Book> Books { get; set; } //make a DbSet of your classes
public DbSet<News> News { get; set; }


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Pluralize your tablenames from Books to Book and from Newss to News :)
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}

在你的 Controller 中:

使用 View 模型

public ActionResult BookNewsIndex()
{
var viewModel = new BookNewsViewmodel();
viewModel.Books = db.Books
.Include(n => n.News)



return View(viewModel.ToList()); //return your data.ToList() to your view
}

没有 View 模型

public ActionResult BookNewsIndex()
{
var data = db.Books.Include(n => n.News);


return View(data.ToList()); //return your data.ToList() to your view
}

在名为 BookNewsIndex 的 View 中,您可以执行此操作。我对此不确定,但你可以尝试一下

@model yourproject.ViewModels.BookNewsViewmodel for your viewmodel
OR
@model IEnumerable<yourProject.Models.Book> without viewmodel

with viewmodel
@model.Books.ShortDescription
@model.News.Subtitle

without viewmodel
@Model.First().ShortDescription get something from your book!
@Model.First().News.First().Subtitle get something from news!

In part 7 of the tutorial he will use a viewmodel

希望这对您有帮助!

关于asp.net-mvc - 如何在同一 Controller ( Entity Framework )中使用两个模型并在不同的操作中使用每个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com