【问题标题】:Insert ForEach Value in View into the Database MVC将视图中的 ForEach 值插入数据库 MVC
【发布时间】:2021-01-16 06:54:41
【问题描述】:

您好,目前我正在为我的项目做一个购物车

我想问一下如何将 ForEach 中的值导入数据库。

例如,我的视图中有以下数据。

@foreach (Cart_Has_Services c in Model)
    {
        <div class="cart-row">
            <div class="cart-items">@c.Cart_Service</div>
            <div class="cart-items">@c.Additional_Notes</div>
            <div class="cart-items">@c.Unit_Price</div>
            <div class="cart-items">
                <form asp-controller="Cart" asp-action="UpdateCart" formaction="post">
                    <input type="number" class="item-quantity-input" value="@c.Quantity" />
                    <input type="submit" class="btn btn-secondary" value="Update" />
                </form>
            </div>
            <div class="cart-items">
                <a asp-controller="Cart"
                   asp-action="DeleteItem"
                   asp-route-id="@c.Cart_Id"
                   onclick="return confirm('Delete Serivce @c.Cart_Service')">
                    Delete
                </a>
            </div>
        </div>
    }

就目前而言,我想将数据(购物车服务、附加说明和数量)插入到我的数据库(订单)中。

在我的控制器中:

public IActionResult Checkout(Cart_Has_Services cart) 
    { 
    
        List<Cart_Has_Services> carts = DBUtl.GetList<Cart_Has_Services>("SELECT * FROM Cart");        
        string sql = @"INSERT INTO [Order](Order_Name,Order_Description,Order_Quantity) 
                     VALUES('{0}','{1}',{2})";
        int ord = DBUtl.ExecSQL(sql, cart.Cart_Service, cart.Additional_Notes, cart.Quantity);
        if (ord == 1)
        {
            TempData["Message"] = "Perofrmance Successfully Created";
            TempData["MsgType"] = "success";
            return RedirectToAction("Success");

        }
        else
        {
            ViewData["Message"] = DBUtl.DB_Message;
            ViewData["MsgType"] = "danger";
            return View("ShoppingCart");
        }
    }

我尝试了我插入的方法,但它没有插入数据就创建了。

我该如何解决这个问题?

希望能得到一些指导。

谢谢

【问题讨论】:

    标签: asp.net-core model-view-controller


    【解决方案1】:

    视图中的表单只提交Quantity,没有Cart_ServiceAdditional_Notes。 要提交它们的值,您可以在表单中设置隐藏输入。您还应该为模型绑定的输入设置名称属性。

    @foreach (Cart_Has_Services c in Model)
    {
        <div class="cart-row">
            <div class="cart-items">@c.Cart_Service</div>
            <div class="cart-items">@c.Additional_Notes</div>
            <div class="cart-items">@c.Unit_Price</div>
            <div class="cart-items">
                <form asp-controller="Cart" asp-action="UpdateCart" formaction="post">
                    
                    <input type="hidden" name="Cart_Service" value="@c.Cart_Service" />
                    <input type="hidden" name="Additional_Notes" value="@c.Additional_Notes" />
                    <input type="number" name="Quantity" class="item-quantity-input" value="@c.Quantity" />
                    <input type="submit" class="btn btn-secondary" value="Update" />
                </form>
            </div>
            <div class="cart-items">
                <a asp-controller="Cart"
                   asp-action="DeleteItem"
                   asp-route-id="@c.Cart_Id"
                   onclick="return confirm('Delete Serivce @c.Cart_Service')">
                    Delete
                </a>
            </div>
        </div>
    }
    

    【讨论】:

    • 感谢您的回复。我的控制器怎么样,我需要编辑什么吗?
    • 嗨@YongKevin,这个控制器操作(Checkout)是否处理​​从表单提交的请求?既然form target action是UpdateCart,那么view和这个controller action是什么关系呢?
    • 我已经删除的 UpdateCart。现在,我只使用 CheckOut 作为提交表单的操作
    • @Yong Kevin,好的,那你可以在方法处设置断点,debug看cart是否接受正确的值,如果接受,继续,检查数据是否插入成功。
    • 嗨,我尝试了该方法并且正在工作,但现在我面临另一个问题。现在,我想插入一个解析表,我需要检索 Id(Order_id 等)但 Id 是自动 INSERT,如何为我的第二个 INSERT 语句检索自动生成的 ID(Order_Id)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多