大家好,我上周开始使用MVC ASP.NET,并且我在这方面取得了很好的进展。现在我有一些想法 创建控件,附加视图,数据库(保存,获取记录),模型中的类等。
直到现在我可以用一个对象(强烈地)连接打开页面
public ActionResult Edit(int id)
{
Book book = db.BOOKS.Find(id);
return View(book);
}
并将其发送回控制器,并在文本字段中添加信息并保存。
[HttpPost]
public ActionResult Edit(Book book)
{
if (ModelState.IsValid)
{
db.Entry(book).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(book);
}
直到现在一切都很好。这是真正的问题。
假设我还有一个包含Book.Review的表。
Int ID (identity)
Int BookID
Varchar comments
现在我想要的是用户打开一个页面并想要对书籍添加一些评论。所以这个评论应该去BookReview表,书籍ID和Book相关数据应该去Book表。所以我想象中的图片就像是
[HttpPost]
public ActionResult Edit(Book book, BookReview review)
{
if (ModelState.IsValid)
{
db.Entry(book).State = EntityState.Modified;
db.Entry(review).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(book);
}
下次当用户点击同一本书时,他/她可以看到书籍信息以及添加评论。
我不知道如何使用MVC
在两个表中插入记录答案 0 :(得分:1)
你有没有试过这样的东西?
db.Books.AddObject(book);
db.Reviews.AddObject(review);
db.SaveChanges();
我认为您的问题与实体框架以及“Linq to entities”更相关。这可能有助于您进行下一次研究。
不过,您还需要将评论绑定到视图。我认为最好的方法是创建一个ViewModel。
您可能想将其称为BookAndReviewViewModel,并使用它:
public class BookAndReviewViewModel {
public Book book {get; set;}
public BookReview bookReview {get; set;}
}
然后在你的控制器中使用它:
[HttpPost]
public ActionResult Edit(BookAndReviewViewModel bookAndReview)
{
if (ModelState.IsValid)
{
db.Books.AddObject(bookAndReview.book);
db.Reviews.AddObject(bookAndReview.bookReview);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(bookAndReview);
}