如何使用选择标签更新数据库值

时间:2018-07-09 18:46:30

标签: c# razor asp.net-core

我要完成的是一个选择列表,该列表使用新选择的值更新mySQL数据库中购物篮表中该项目的用户数量。 我认为尝试解决此问题时,我最大的问题是不知道该怎么用Google搜索,例如:

  • “将选择列表绑定到模型”。
  • “ onchange事件触发控制器动作”。
  • “使用选择标签索引更新数据库”。

但是,我从这些搜索中得到的答案使我无所适从,也不确定我是否正在寻找正确的主题。

我对ASP.NET MVC还是很陌生,我以前只使用过ASP.NET表单,过去只使用过少量的JavaScript,因此对于任何复杂的解释都将不胜感激。

我创建的模型允许我通过使用公共属性初始化其他视图模型来访问购物篮列表和产品列表。

public class BasketCompatabiltyModel
{
    public BasketCompatabiltyModel()
    {
        this.Basket = new Basket();
        this.Bvm = new BasketViewModel();
        this.Pvm = new ProductsCategoryViewModel();
    }
    public Basket Basket{ get; set; }
    public BasketViewModel Bvm { get; set; }
    public ProductsCategoryViewModel Pvm { get; set; }
}

然后在模型中,索引操作将收集列表的数据。

public async Task<IActionResult> Index(BasketCompatabiltyModel model)
    {
        var basketVM = new BasketCompatabiltyModel();
        var baskets = from b in _context.Basket select b;
        var products = from p in _context.Products select p;

        var user = await _userManager.FindByNameAsync(ControllerContext.
        HttpContext.User.Identity.Name);

        string userId = await _userManager.GetUserIdAsync(user);

        baskets = baskets.Where(s => s.CustomerId.Equals(userId));

        basketVM.Bvm.baskets = baskets.ToList();  

        basketVM.Pvm.products = products.ToList();

        return View(basketVM);
     }

关于视图,我有这段代码可以生成一个从1到15的selectList。

    List<int> quantityLimit = new List<int>(15);

    for (int i = 1; i < 16; i++)
    {
        quantityLimit.Add(i);
    }

    SelectList quantitySelect = new SelectList(quantityLimit);

然后我有代码显示列表,其中包含我发现使用asp-for和onchange事件实现的解决方案,但这似乎不起作用。

@foreach (var item in Model.Bvm.baskets)
{
    @foreach (var item2 in Model.Pvm.products)
    {
        if (item.ProductId == item2.ProductId)
        {
             <div class="layout-basket">

             <select onchange="submit()" asp-for="Basket.Quantity">
             @foreach (var q in quantityLimit)
             {
                 if (q == item.Quantity)
                 {
                    <option selected>
                    @q
                    </option>
                 }

                 else
                 {
                    <option>
                    @q
                    </option>
                 }
             }
             </select>
             </div>
        }
    }
}

0 个答案:

没有答案