linq Net Core-将数据添加到不同的模型

4zcjmb1e  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(112)

我正在项目的订单页面上提取额外的物料。由于该页面上的型号是product,我需要运行cart类来添加到购物车中。但我不知道如何使用asp-for来完成此操作。由于该页面上的型号是product,我如何为cart类添加数据?

@if (product.ProductExtras.Any())
{
    <h5>Ekstra Malzemeler</h5>
    <ul class="clearfix">

        @foreach (var extra in product.ProductExtras)
        {
            <li>
                <label class="container_check">
                    @extra.Extra.Name<span>+ @extra.Extra.Price.ToString("c2")</span>
                    <input type="checkbox">
                    <span class="checkmark"></span>
                </label>
            </li>
        }
    </ul>
}
9ceoxa92

9ceoxa921#

cart类和product类包含在一个类中,并在视图中使用该类,则可以访问cart类和product类的数据。
就像这样:

public class ViewModel
{
    //Choose the data type depending on your needs
    public List<cart> cart { get; set; }
    public List<product> product { get; set; }
}

有关详细信息,请参阅this link

    • 更新日期:**

我试着发送一个带有复选框状态的帖子请求,也许这就是你的意思。控制器:

[HttpGet]
        public IActionResult Test()
        {
            ViewModel viewmodel = new ViewModel();
            viewmodel.product = new List<Product>();
            viewmodel.product.Add(new Product() {Id =1,Name="Product1" });
            viewmodel.product.Add(new Product() { Id = 2, Name = "Product2" });
            viewmodel.product.Add(new Product() { Id = 3, Name = "Product3" });
            return View(viewmodel);
        }

        [HttpPost]
        public JsonResult Test([FromBody]ViewModel viewmodel)
        {
            //your own processing logic
            return Json(viewmodel);
        }

查看方式:

@model _2022080202.Models.ViewModel

    <table class="table">
        <thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.product[0].Id)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.product[0].Name)
                </th>
                <th></th>
            </tr>
        </thead>
        <tbody>
    @foreach (var item in Model.product) {
            <tr>
                <td name = "Id">@Html.DisplayFor(modelItem => item.Id)</td>
                <td name = "Name">@Html.DisplayFor(modelItem => item.Name)</td>
                <td><input type="checkbox" value="@item.Id" /></td>
            </tr>
    }
        </tbody>
    </table>

<script src="https://code.jquery.com/jquery-1.12.4.js" type="text/javascript"></script>
<script>
    
    $('input[type=checkbox]').change(function() {
        if ($(this).is(":checked")) {
            var id = $(this).val(); //The value bound in the checkbox
            var row = $(this).parent("td").parent("tr");
            ProductId = row.find("[name='Id']").text();
            ProductName = row.find("[name = 'Name']").text();
            var data = { ProductId: parseInt(ProductId), ProductName: ProductName };
            var cart = new Array();
            cart.push(data);
            var viewmodel = { cart: cart};

            $.ajax({
                type: "post",
                url: '/Home/Test',
                data: JSON.stringify(viewmodel),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(result) {
                    //your own processing logic
                },
                error: function(error) { }
            });
        }
    });
</script>

我把所有的数据发送出去,如果你想的话,你可以只发送一个ID,然后在控制器中做下面的事情。
测试结果:

相关问题