如何使用View中的下拉列表将数据从ViewModel插入数据库

多米尼克N

我有一个使用下拉列表为数据库创建记录的概念,该列表已经包含来自同一数据库但来自其他表的数据。

我的部分数据库如下所示:

在此处输入图片说明

在Visual Studio中,我使用了自动表格支架,我创建了ModelView以跳过使用Id。ID是自动生成的,因此不需要使用ID来更改ID号。以下是模型:

在此处输入图片说明

ModelView使用一个下拉列表,并且将从下拉列表中选择的项与用户输入的基本数据一起传输到数据库。

程序代码尝试:

控制者

public IActionResult Create()
{
    ObjectViewModel model = new ObjectViewModel();

    foreach (var object in _context.ObjectA)
    {
        model.ObjectA.Add(new SelectListItem { Text = object.A, Value = object.IdA });
    }

    foreach (var hear in _context.ObjectB)
    {
        model.ObjectB.Add(new SelectListItem { Text = object.B, Value = object.IdB });
    }

    foreach (var object in _context.ObjectC)
    {
        model.ObjectC.Add(new SelectListItem { Text = object.C, Value = object.IdC });
    }

    return View(model);
}

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(string IdA, string IdB, string IdC)
{
    ObjectViewModel model = new ObjectViewModel();
    ObjectABC abc = new ObjectABC();

    if (ModelState.IsValid)
    {
        foreach (var object in _context.ObjectA)
        {
            model.ObjectA.Add(new SelectListItem { Text = object.A, Value = object.IdA });
        }

        if (IdA != string.Empty)
        {
            var objectsA = (from a in _context.ObjectABC
                            where a.IdA == IdA
                            select a).ToList();

            if (IdB != string.Empty)
            {
                var objectsB = (from b in _context.ObjectABC
                                where b.IdB == IdB
                                select b).ToList();

                foreach (var object in _context.ObjectB)
                {
                    model.ObjectB.Add(new SelectListItem { Text = object.B, Value = object.IdB });
                }

                if (IdC != string.Empty)
                {
                    var objectsC = (from c in _context.ObjectABC
                                    where c.IdC == IdC
                                    select c).ToList();

                    foreach (var object in _context.ObjectC)
                    {
                        model.ObjectC.Add(new SelectListItem { Text = object.C, Value = object.IdC });
                    }
                }
            }
        }

        _context.Add(abc);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }
    return View(model);
}

视图

<form asp-action="Create">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-gr">
        <label asp-for="ObjectA" class="control-label"></label>
        <select asp-for="IdA" class="select-style" asp-items="Model.objectsA">
            <option value = "" > --Select option--</option>
        </select>
    </div>
    <div class="form-gr">
        <label asp-for="ObjectB" class="control-label"></label>
        <select asp-for="IdB" class="select-style" asp-items="Model.objectsB">
            <option value = "" > --Select option--</option>
        </select>
    </div>
    <div class="form-gr">
        <label asp-for="ObjectC" class="control-label"></label>
        <select asp-for="IdC" class="select-style" asp-items="Model.objectsC">
            <option value = "" > --Select option--</option>
        </select>
    </div>
    <div class="form-gr">
        <label asp-for="Price" class="control-label"></label>
        <input asp-for="Price" class="form-control" />
        <span asp-validation-for="Price" class="text-danger"></span>
    </div>
    <div class="form-gr">
        <input type = "submit" value="Create" class="btn btn-primary" />
    </div>
</form>

但是它不起作用。有什么想法吗?

塔赫玛塞·拉西(Tahmaseb Rasi)

您无需填充的属性ObjectABC,就可以像这样发布创建操作

 [HttpPost]
 [ValidateAntiForgeryToken]
 public async Task<IActionResult> Create(string IdA, string IdB, string IdC)
 {
       ObjectABC abc = new ObjectABC();

       if (ModelState.IsValid)
       {
          if (IdA != string.Empty && IdB != string.Empty && IdC != string.Empty)
                {
                    abc.IdA = IdA;
                    abc.IdB = IdB;
                    abc.IdC = IdC;
                    _context.Add(abc);
                    await _context.SaveChangesAsync();
                    return RedirectToAction(nameof(Index));
                }                
        }

        ObjectViewModel model = new ObjectViewModel();

        foreach (var object in _context.ObjectA)
                model.ObjectA.Add(new SelectListItem { Text = object.A, Value =object.IdA });          

        foreach (var hear in _context.ObjectB)
                model.ObjectB.Add(new SelectListItem { Text = object.B, Value = object.IdB }); 

        foreach (var object in _context.ObjectC)
                model.ObjectC.Add(new SelectListItem { Text = object.C, Value = object.IdC });

        model.IdA = IdA;
        model.IdB = IdB;
        model.IdC = IdC;

        return View(model);
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将下拉列表中的值插入数据库表

来自分类Dev

如何将下拉列表中的其他选定值插入数据库

来自分类Dev

使用PHP和SQL将数据库中的信息插入下拉列表菜单

来自分类Dev

如何将数据从下拉列表插入数据库

来自分类Dev

如何从Codeigniter中的多个选择下拉列表中将数据插入数据库?

来自分类Dev

如何将下拉菜单中的数据插入数据库中的新表?

来自分类Dev

如何从文本框和下拉列表将值插入数据库

来自分类Dev

从列表将数据插入数据库

来自分类Dev

如何将检索数据从数据库加载到yii的下拉列表中

来自分类Dev

如何将列表中的数据插入SQLite3数据库

来自分类Dev

如何使用对象和模态列表(List <Object>)将数据插入数据库?

来自分类Dev

如何使用JavaScript将数据插入数据库

来自分类Dev

如何使用opencart将数据插入数据库?

来自分类Dev

如何使用JavaScript将数据插入数据库

来自分类Dev

如何使用列名“默认”将数据插入数据库

来自分类Dev

如何使用formcollection将数据插入数据库

来自分类Dev

使用Hibernate将下拉列表值保存到Struts 2中的数据库中

来自分类Dev

使用实体框架将数据库中的值绑定到MVC中的下拉列表

来自分类Dev

如何将多维列表插入sqlite数据库

来自分类Dev

如何将多维列表插入sqlite数据库

来自分类Dev

如何使用MVC从数据库表填充下拉列表?

来自分类Dev

如何使用Python将列表列表插入数据库

来自分类Dev

使用Tuples的Python列表将多行插入数据库

来自分类Dev

使用Tuples的Python列表将多行插入数据库

来自分类Dev

如何将数据库值绑定到Android代码中的Spinner下拉列表?

来自分类Dev

如何将值从数据库绑定到MVC 3中的下拉列表

来自分类Dev

数据库中的JSP下拉列表

来自分类Dev

从PHP中的数据库下拉列表

来自分类Dev

从数据库中选择数据并插入到下拉列表中-MVC 4

Related 相关文章

  1. 1

    将下拉列表中的值插入数据库表

  2. 2

    如何将下拉列表中的其他选定值插入数据库

  3. 3

    使用PHP和SQL将数据库中的信息插入下拉列表菜单

  4. 4

    如何将数据从下拉列表插入数据库

  5. 5

    如何从Codeigniter中的多个选择下拉列表中将数据插入数据库?

  6. 6

    如何将下拉菜单中的数据插入数据库中的新表?

  7. 7

    如何从文本框和下拉列表将值插入数据库

  8. 8

    从列表将数据插入数据库

  9. 9

    如何将检索数据从数据库加载到yii的下拉列表中

  10. 10

    如何将列表中的数据插入SQLite3数据库

  11. 11

    如何使用对象和模态列表(List <Object>)将数据插入数据库?

  12. 12

    如何使用JavaScript将数据插入数据库

  13. 13

    如何使用opencart将数据插入数据库?

  14. 14

    如何使用JavaScript将数据插入数据库

  15. 15

    如何使用列名“默认”将数据插入数据库

  16. 16

    如何使用formcollection将数据插入数据库

  17. 17

    使用Hibernate将下拉列表值保存到Struts 2中的数据库中

  18. 18

    使用实体框架将数据库中的值绑定到MVC中的下拉列表

  19. 19

    如何将多维列表插入sqlite数据库

  20. 20

    如何将多维列表插入sqlite数据库

  21. 21

    如何使用MVC从数据库表填充下拉列表?

  22. 22

    如何使用Python将列表列表插入数据库

  23. 23

    使用Tuples的Python列表将多行插入数据库

  24. 24

    使用Tuples的Python列表将多行插入数据库

  25. 25

    如何将数据库值绑定到Android代码中的Spinner下拉列表?

  26. 26

    如何将值从数据库绑定到MVC 3中的下拉列表

  27. 27

    数据库中的JSP下拉列表

  28. 28

    从PHP中的数据库下拉列表

  29. 29

    从数据库中选择数据并插入到下拉列表中-MVC 4

热门标签

归档