【问题标题】:Asp.net MVC-How to add order-orderDetails objects using EntityFramework?Asp.net MVC-如何使用实体框架添加订单订单详情对象?
【发布时间】:2009-11-25 23:44:25
【问题描述】:

我有一个应用程序使用一对多关系对象,例如 oreder-orderDetails,vith EntityFramework。

我想使用一个视图,它可以使用一些 orderDetails 对象添加新订单。

我可以创建一个强类型视图,它返回一个具有 List orderDetails 属性的订单对象,但不能填充 orderDetails。

有人有解决办法吗?

提前致谢

加布里埃尔

【问题讨论】:

    标签: asp.net-mvc entity-framework one-to-many relationship


    【解决方案1】:

    我认为您需要使用订单表而不是订单视图来执行此操作。

    【讨论】:

    • 我的意思是一个 asp.net MVC 视图并使用 EntityFramework 将数据库表映射到对象
    【解决方案2】:

    好的,假设您创建了一个名为 OpenOrders 的视图,该视图继承自您的 Order 实体。

    <%@ Page Language="C#"  
    Inherits="System.Web.Mvc.ViewPage<List<OrdersApp.Models.Order>>" %>
    

    因此,您可以显示订单列表中的项目,还可以添加一个表单,允许 输入订单详情。

    因此,当您发布到页面时,您可以收到 Orders 对象和 FormCollection 对象

    //
    // POST: /Orders/OpenOrders/Details
    
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult OpenOrders(Order order, FormCollection collection)
    

    然后你可以新建一个OrderDetails对象并将其添加到Orders对象中然后保存。

    OrderDetails orderdetails = new OrderDetails()
    
    orderdetails.Description = = collection["OrderDescription"].ToString();
    ...
    ...
    
    order.OrderDetails.Add(orderdetails);
    orderRepository.Save();
    

    【讨论】:

      【解决方案3】:
      • 主题添加订单orderDetails

        1. 添加到订单表中

        2. 在订单表中按orderID选择列表订单

        3. 按订单详细检查产品是否有重叠

        4. 循环认为listorderdetail中的每个orderdetail,添加到数据库中

        5. 检查一些条件,例如:产品表中的产品数量......

      -好的?

      【讨论】:

        【解决方案4】:

        我在视图中使用了以下代码来填充列表中的数据。

            @model Webrixs_Portal.Web.Models.CustomViewModels.RefvaluesCreateEditModels   
            @using (Html.BeginForm("EmbadedEditor", "Refvalues", FormMethod.Post, new { id = "SavingRefValueInTable" })) 
            {        
              @for (var i = 0; i < Model.ReferenceTranslateion.Count(); i++)
                {
        
                    <div class="row" style="margin-left:0px;margin-right:0px;padding-left: 0px !important;  padding-right: 0px !important;margin-top:5px;">
        
                        <div class="col-md-3" style="padding-right:0px;padding-left:3px;  -webkit-box-sizing: border-box;    -moz-box-sizing: border-box;    box-sizing: border-box;">@Model.ReferenceTranslateion[i].RelLanguageName</div>
                        <div class="col-md-9" style="padding-right:0px;padding-left:0px;   -webkit-box-sizing: border-box;    -moz-box-sizing: border-box;    box-sizing: border-box;">
                            @Html.TextBoxFor(model => model.ReferenceTranslateion[i].RelTe1, new { @class = "k-textbox full" })
                        </div>
                        @Html.HiddenFor(model => model.ReferenceTranslateion[i].RelID)
                        @Html.HiddenFor(model => model.ReferenceTranslateion[i].RelLangID)
                    </div>
                }
             }
        

        您可以在此处使用其他控件,例如 listview 或 gridview 等。

        视图模型是这样的:

            public class RefvaluesDetailViewModels
              {
        
            public String RefID { get; set; }
            public List<RefLocaleCreateEditModels> ReferenceTranslateion { get; set; }
               }
        

        也许这对你有帮助。

        【讨论】:

          猜你喜欢
          • 2023-04-02
          • 2019-07-12
          • 1970-01-01
          • 1970-01-01
          • 2018-08-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-12
          相关资源
          最近更新 更多