我有多个表,它们都链接回一个带有外键的中心表。我希望能够在表2中创建一个新记录,但是我遇到了麻烦,因为我不知道如何创建表2的记录的新实例,同时引用它将绑定到的记录的ID。
示例:
数据库:集合
表:采集字段1: id字段2:名称
表:图书字段1: collectionId字段2: id字段3:名称
现在,我不想在不设置collectionID的情况下创建一本书,但是我不知道应该如何在控制器/视图中进行划分。
Book是否应该有一个独立于Collection的控制器,或者Collection控制器是否应该有一个createBook方法,独立于它自己的create方法?
我想从Collection Details视图调用createBook方法(从它自己的控制器,或者Collection控制器)。
当我调用Book的create方法时,如何从details视图中列出的Collection项目的details视图创建一个用collectionId集实例化的新Book?
我应该指出的是,我在我的模型中使用了实体框架,而且我对此绝对是个新手。
谢谢你的帮助
发布于 2010-10-04 06:38:24
尽量不要基于你的实体模型来创建/分离控制器,而要基于UI和URL路由来创建/分离它们。
我猜您有一个名为"CreateBook“的视图,它(希望)绑定到一个强类型的"Book”实体。
当您提交表单时,您应该有一个带有[HttpPost]的控制器方法。
然后,您可以执行以下操作来提交图书:
string bookName = Request.Form["Name"];
int collectionId = Request.Form["CollectionID"];或者将其作为强类型模型传递:
public ActionResult CreateBook(Book book) { }然后执行以下操作:
Book newBook = new Book (book.Name, book.CollectionID);
someDal.CreateBook(newBook);将模型导入EDMX时,请确保勾选了“在模型中包含外键”。
这样做的目的是将"CollectionID“FK添加到图书实体,允许您绑定到该实体并访问每个图书模型上的该属性。
有一篇关于强类型ASP.NET MVC视图的CRUD操作的很好的文章here,应该会让你走上正确的道路。
HTH。
https://stackoverflow.com/questions/3851766
复制相似问题