【问题标题】:MVC Master-Detail CRUD [duplicate]MVC Master-Detail CRUD [重复]
【发布时间】:2016-05-12 16:08:21
【问题描述】:

我从 MVC 开始,我有一些基本的问题,也许你可以给我一些指导: 我将 MVC5 与 Razor 和 EntityFramework 6 一起使用。这里没有 AngularJS 技能。 我有一个经典的 Master-Detail CRUD,我需要在其中创建 Order 和 OrderItems。我的想法是,当您创建订单时,您可以以相同的形式添加商品,然后使用一个“保存”按钮在数据库中创建两条记录(订单和商品)。

我已经用脚手架很好地创建了“订单”CRUD,而且效果很好。但现在我需要将项目添加到同一个视图中,这就是我迷路的地方,并尝试不同的方法来做到这一点:

  1. BINDING ISSUE:我认为可能我可以将 OrderItems 列表添加到 CREATE 事件的绑定标头中。我的 OrderController 有这个方法: public ActionResult Create([Bind(Include = "Id,Date,*other fields*")] Order order) 它适用于 ORDER CRUD 操作。但是,现在,如果需要将 List 添加到绑定在该标题上的字段列表中,这可能吗?那么我应该如何将数据保存在视图中呢?
  2. JSON:我认为的另一种方法是删除 Binding 标头并使用 Json,但我看到的所有示例都是使用 AngularJS,除了这个 CRUD 之外,我已经完成了所有站点,我更喜欢让这个选项获得真正的最后机会。另一方面,我发现了这个:https://www.youtube.com/watch?v=ir9cMbNQP4w,这正是我需要做的,但是:它在 MVC4 上而不是 MVC5 上,而且我在我的模型(扩展)类和一些它们也在控制器中(仅与创建或编辑订单相关的那些)。如果我错了,请告诉我!
  3. 部分视图:我刚刚尝试的最后一种方法是使用部分视图。我已经根据本教程成功创建了初始数据加载:http://dotnetmentors.com/mvc/render-partialview-with-model.aspx,但在那之后,我需要在我的订单中添加新项目,或者编辑/删除现有项目,这就是我迷路的地方:我应该有部分视图的不同 CREATE/EDIT 方法?那我怎么发送数据呢?我如何只能使用一个保存按钮来同时保存所有内容?

当我寻找更多信息时,我越来越迷失......所以,我在这里向你们寻求帮助!

提前非常感谢!

【问题讨论】:

    标签: c# asp.net-mvc entity-framework crud


    【解决方案1】:

    创建自定义视图模型:

    public class NewOrderViewModel
    {
        public Order order { get; set; }
        public OrderItem[] orderItems { get; set; }
    }
    

    然后您可以通过更改顶部的@model NewOrderViewModel 在视图中使用它,您将能够像这样使用:

    @Html.TextBoxFor(m => m.order.Phone);
    @Html.TextBoxFor(m => m.orderItems[0].ItemName);
    

    您将需要一些 javascript 来复制 html 并为用户想要添加的每个新 orderItem 创建新的表单元素。

    那么您的控制器签名将如下所示:

    public ActionResult Create(NewOrderViewModel content)
    

    【讨论】:

      猜你喜欢
      • 2014-07-24
      • 2012-05-27
      • 2013-01-02
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多