如何将新创建的ID从订单控制器传递到MVC中的订单项控制器?

野马00

我想要做的是将一个新创建的OrderID从我的“Order Controller创建表单”传递到“OrderItem Controller创建表单”,并添​​加与OrderID我刚刚传递的特定内容相关的Order_Items 我设法重定向了Create Order按钮,使我直接进入OrderItem Index Form,但是当我想添加new时,它仍将所有以前创建的OrderIDs包括新创建的按钮拉出我希望表单仅提取我刚刚创建的表单,而不是其他所有先前创建的表单OrderIDOrderItemsOrderIDOrderIDs

另外,我将其重定向到“订单项目索引表”的原因是,我可以看到与该特定项目相关的所有“订单项目” OrderID,但仍显示OrderItems为每个订单创建的所有项目OrderID

我不知道如何执行此操作,因为我还不熟悉MVC,因此非常感谢所有帮助。

这是订单控制器的代码:

   using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Entity;
    using System.Linq;
    using System.Net;
    using System.Web;
    using System.Web.Mvc;
    using HealthHabitat.DAL;
    using HealthHabitat.Models;

    namespace HealthHabitat.Controllers
    {
          {
            private HealthContext db = new HealthContext();

        // GET: Order
        public ActionResult Index()
        {
            var orders = db.Orders.Include(o => o.Delivery).Include(o => o.Hospital).Include(o => o.Staff);
            return View(orders.ToList());
        }

        // GET: Order/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Order order = db.Orders.Find(id);
            if (order == null)
            {
                return HttpNotFound();
            }
            return View(order);
        }

        // GET: Order/Create
        public ActionResult Create()
        {
            ViewBag.HospitalID = new SelectList(db.Hospitals, "HospitalID", "Name");
            ViewBag.StaffID = new SelectList(db.Staffs, "StaffID", "First_Name");
            return View();
        }

        // POST: Order/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "OrderID,HospitalID,StaffID,Date,Time")] Order order)
        {
            if (ModelState.IsValid)
            {
                db.Orders.Add(order);
                db.SaveChanges();

                return RedirectToAction("Index","OrderItem", new { id = "OrderID" });
            }


            ViewBag.HospitalID = new SelectList(db.Hospitals, "HospitalID", "Name", order.HospitalID);
            ViewBag.StaffID = new SelectList(db.Staffs, "StaffID", "First_Name", order.StaffID);
            return View(order);
        }

        // GET: Order/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Order order = db.Orders.Find(id);
            if (order == null)
            {
                return HttpNotFound();
            }
            ViewBag.DeliveryID = new SelectList(db.Deliverys, "DeliveryID", "DeliveryID", order.DeliveryID);
            ViewBag.HospitalID = new SelectList(db.Hospitals, "HospitalID", "Name", order.HospitalID);
            ViewBag.StaffID = new SelectList(db.Staffs, "StaffID", "First_Name", order.StaffID);
            return View(order);
        }

        // POST: Order/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "OrderID,HospitalID,StaffID,DeliveryID,Date,Time")] Order order)
        {
            if (ModelState.IsValid)
            {
                db.Entry(order).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.DeliveryID = new SelectList(db.Deliverys, "DeliveryID", "DeliveryID", order.DeliveryID);
            ViewBag.HospitalID = new SelectList(db.Hospitals, "HospitalID", "Name", order.HospitalID);
            ViewBag.StaffID = new SelectList(db.Staffs, "StaffID", "First_Name", order.StaffID);
            return View(order);
        }

        // GET: Order/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Order order = db.Orders.Find(id);
            if (order == null)
            {
                return HttpNotFound();
            }
            return View(order);
        }

        // POST: Order/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Order order = db.Orders.Find(id);
            db.Orders.Remove(order);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
    }

这是Order_Item控制器的代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using HealthHabitat.DAL;
using HealthHabitat.Models;

namespace HealthHabitat.Controllers
{
    public class OrderItemController : Controller
    {
        private HealthContext db = new HealthContext();

        // GET: OrderItem
        public ActionResult Index()
        {

            var order_Items = db.Order_Items.Include(o => o.Item).Include(o => o.Order);

            return View(order_Items.ToList());


        }

        // GET: OrderItem/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Order_Item order_Item = db.Order_Items.Find(id);
            if (order_Item == null)
            {
                return HttpNotFound();
            }
            return View(order_Item);
        }

        // GET: OrderItem/Create
        public ActionResult Create()
        {

            ViewBag.ItemID = new SelectList(db.Items, "ItemID", "Name");
            ViewBag.OrderID = new SelectList(db.Orders, "OrderID", "OrderID");
            return View();
        }

        // POST: OrderItem/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "Order_ItemID,OrderID,ItemID,Type,Quantity")] Order_Item order_Item)
        {
            if (ModelState.IsValid)
            {

                db.Order_Items.Add(order_Item);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.ItemID = new SelectList(db.Items, "ItemID", "Name", order_Item.ItemID);
            ViewBag.OrderID = new SelectList(db.Orders, "OrderID", "OrderID", order_Item.OrderID);
            return View(order_Item);
        }

        // GET: OrderItem/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Order_Item order_Item = db.Order_Items.Find(id);
            if (order_Item == null)
            {
                return HttpNotFound();
            }
            ViewBag.ItemID = new SelectList(db.Items, "ItemID", "Name", order_Item.ItemID);
            ViewBag.OrderID = new SelectList(db.Orders, "OrderID", "OrderID", order_Item.OrderID);
            return View(order_Item);
        }

        // POST: OrderItem/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "Order_ItemID,OrderID,ItemID,Type,Quantity")] Order_Item order_Item)
        {
            if (ModelState.IsValid)
            {
                db.Entry(order_Item).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.ItemID = new SelectList(db.Items, "ItemID", "Name", order_Item.ItemID);
            ViewBag.OrderID = new SelectList(db.Orders, "OrderID", "OrderID", order_Item.OrderID);
            return View(order_Item);
        }

        // GET: OrderItem/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Order_Item order_Item = db.Order_Items.Find(id);
            if (order_Item == null)
            {
                return HttpNotFound();
            }
            return View(order_Item);
        }

        // POST: OrderItem/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Order_Item order_Item = db.Order_Items.Find(id);
            db.Order_Items.Remove(order_Item);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}

订单模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace HealthHabitat.Models
{
    public class Order
    {
        public int OrderID { get; set; }

        [Display(Name = "Hospital")]
        public int HospitalID { get; set; }

        [Display(Name = "Staff")]
        public int StaffID { get; set; }
        public int? DeliveryID { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public DateTime Date { get; set; }

        [DataType(DataType.Time)]
        [DisplayFormat(DataFormatString = "{0:H:mm}", ApplyFormatInEditMode = true)]
        public DateTime Time { get; set; }

        public virtual Hospital Hospital { get; set; }
        public virtual Staff Staff { get; set; }
        public virtual Delivery Delivery { get; set; }
        public virtual ICollection<OrderItem> OrderItems { get; set; }
    }
}

OrderItem模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace HealthHabitat.Models
{
    public class OrderItem
    {

        public int OrderItemID { get; set; }
        public int OrderID { get; set; }
        public int ItemID { get; set; }

        [Required]
        public string Type { get; set; }

        public int Quantity { get; set; }

        public virtual Order Order { get; set; }
        public virtual Item Item { get; set; }

    }
}

项目型号

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace HealthHabitat.Models
{
    public class Item
    {
        public int ItemID { get; set; }

        [Required, Display(Name = "Item Type")]
        public string Type { get; set; }

        [Required, Display(Name = "Item Name")]

        public string Name { get; set; }

        [Display(Name = "Item Quantity")]
        public int Quantity { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-mm-dd}", ApplyFormatInEditMode = true)]
        [Display(Name = "Expiry Date")]
        public DateTime Expiry_Date { get; set; }
        public int Consumption { get; set; }

        public virtual ICollection<OrderItem> OrderItems { get; set; }
    }
}
用户名

尚不清楚您的Index()方法的目的是什么OrderItemController您只显示所有订单的所有订单项目。通常,您的Details()方法OrderController将显示订单的详细信息以及与该订单相关的项目的列表(例如,一张表,其中显示每个OrderItem的所有详细信息,包括编辑/删除链接,或者如果太多Details()方法链接到该方法OrderItemController显示在一页上的信息)

我建议以下结构

OrderController

public ActionResult Index()
{
  // Display a collection on all orders
}
public ActionResult Details(int ID)
{
  // Display the details of an order, including a collection of its order items
}
public ActionResult Create()
{
  // Create a new Order
}
[HttpPost]
public ActionResult Create(Order model)
{
  // Save the order
  return RedirectToAction("Details", new { ID = model.ID });
}

Details.cshtml然后,视图将包含一个链接(菜单项),以创建一个OrderItemOrder

@Html.ActionLink("Create Item", "Create", "OrderItem", new { ID = Model.OrderID }, null)

OrderItemController

public ActionResult Create(int ID) // ID is the ID of the Order
{
  OrderItem model = new OrderItem() { OrderID = ID };
  return View(model);
}
[HttpPost]
public ActionResult Create(OrderItem model)
{
  // Save the OrderItem and redirect to the order details page
  return RedirectToAction("Details", "Order", new { ID = model.OrderID });
}

在的Create.cshtml视图中OrderDetailsOrderID在表单中包含作为路线值,或在表单内包含隐藏的输入

@model OrderDetail
@using (Html.BeginForm(new { OrderID = Model.OrderID }))
{
  ....
}

旁注:建议您遵循常规的命名约定-OrderItem而不是Order_Item-并使用视图模型,尤其是在创建/编辑和删除那些糟糕的[Bind(Include = "...")]属性时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将xml从控制器传递到mvc4中的其他控制器

来自分类Dev

如何将多个jquery datepicker参数从视图传递到MVC 5中的控制器?

来自分类Dev

如何将列表从控制器传递到ASP.NET MVC中的javascript函数?

来自分类Dev

如何将ID从剃刀视图传递到ASP .Net MVC中控制器的操作方法?

来自分类Dev

Laravel 5.2-如何获取新创建的用户的ID并将其传递给控制器

来自分类Dev

Laravel 5.2-如何获取新创建的用户的ID并将其传递给控制器

来自分类Dev

覆盖magento中的订单控制器

来自分类Dev

如何将数据从父视图控制器传递到子视图控制器?

来自分类Dev

如何将列表从视图传递到控制器

来自分类Dev

如何将列表从视图传递到控制器

来自分类Dev

如何将数据从控制器传递到dompdf?

来自分类Dev

如何将数组从控制器传递到javascript?

来自分类Dev

如何将列表从视图传递到控制器?

来自分类Dev

如何将列表从Ajax传递到控制器

来自分类Dev

如何将值从视图传递到控制器

来自分类Dev

如何将变量从控制器传递到块

来自分类Dev

如何将数据从指令传递到控制器?

来自分类Dev

如何将数据从服务传递到控制器?

来自分类Dev

如何将变量从控制器传递到视图

来自分类Dev

如何将多值从控制器传递到 HTML

来自分类Dev

如何将数据传递到导航控制器中嵌入的集合视图控制器

来自分类Dev

在MVC中,将列表从JSP传递到控制器

来自分类Dev

如何将链接ID传递给控制器?

来自分类Dev

如何将值从一个控制器传递到ASP.Net MVC3中的另一个控制器

来自分类Dev

如何将JavaScript数据传递到控制器ASP.NET MVC

来自分类Dev

如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

来自分类Dev

如何将完整的文件路径从客户端传递到MVC控制器?

来自分类Dev

如何将元组从JavaScript传递到ASP.NET MVC控制器操作

来自分类Dev

如何将变量数据从控制器传递到视图(MVC)

Related 相关文章

  1. 1

    如何将xml从控制器传递到mvc4中的其他控制器

  2. 2

    如何将多个jquery datepicker参数从视图传递到MVC 5中的控制器?

  3. 3

    如何将列表从控制器传递到ASP.NET MVC中的javascript函数?

  4. 4

    如何将ID从剃刀视图传递到ASP .Net MVC中控制器的操作方法?

  5. 5

    Laravel 5.2-如何获取新创建的用户的ID并将其传递给控制器

  6. 6

    Laravel 5.2-如何获取新创建的用户的ID并将其传递给控制器

  7. 7

    覆盖magento中的订单控制器

  8. 8

    如何将数据从父视图控制器传递到子视图控制器?

  9. 9

    如何将列表从视图传递到控制器

  10. 10

    如何将列表从视图传递到控制器

  11. 11

    如何将数据从控制器传递到dompdf?

  12. 12

    如何将数组从控制器传递到javascript?

  13. 13

    如何将列表从视图传递到控制器?

  14. 14

    如何将列表从Ajax传递到控制器

  15. 15

    如何将值从视图传递到控制器

  16. 16

    如何将变量从控制器传递到块

  17. 17

    如何将数据从指令传递到控制器?

  18. 18

    如何将数据从服务传递到控制器?

  19. 19

    如何将变量从控制器传递到视图

  20. 20

    如何将多值从控制器传递到 HTML

  21. 21

    如何将数据传递到导航控制器中嵌入的集合视图控制器

  22. 22

    在MVC中,将列表从JSP传递到控制器

  23. 23

    如何将链接ID传递给控制器?

  24. 24

    如何将值从一个控制器传递到ASP.Net MVC3中的另一个控制器

  25. 25

    如何将JavaScript数据传递到控制器ASP.NET MVC

  26. 26

    如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

  27. 27

    如何将完整的文件路径从客户端传递到MVC控制器?

  28. 28

    如何将元组从JavaScript传递到ASP.NET MVC控制器操作

  29. 29

    如何将变量数据从控制器传递到视图(MVC)

热门标签

归档