【问题标题】:How to Insert a record in database using dropdownlist In asp.net mvc?如何在asp.net mvc中使用下拉列表在数据库中插入记录?
【发布时间】:2020-01-19 11:28:06
【问题描述】:

我在 asp.net MVC 中使用实体框架数据库优先方法实现一个下拉列表??

我在 MVC 中实现了一个下拉列表,当我在监视窗口中调试时,我插入的记录显示但未插入到数据库中,这是一个问题吗??

数据库字段名称:

tbl_product

  • ProductID int
  • 产品名称 varchar(50)
  • ProductList varchar(50)

tbl_product.cs

    // <auto-generated>
    // </auto-generated>
    public partial class tbl_product
    {
        public int ProductID { get; set; }
        public string ProductName { get; set; }
        public string ProductList { get; set; }

        public IEnumerable<SelectListItem> ProductLists { get; set; }
    }

HomeController.cs

        ProductEntities prodb = new ProductEntities();

        public ActionResult Index()
        {
            return View(prodb.tbl_product.ToList());
        }

        public ActionResult Prodlist()
        {

            var ProductLists = GetallProductList();

            var model = new tbl_product();


            model.ProductLists = GetSelectListItems(ProductLists);

            return View(model);
        }

        [HttpPost]
        public ActionResult Prodlist(tbl_product product)
        {
            var ProductLists = GetallProductList();

            product.ProductLists = GetSelectListItems(ProductLists);

            if (ModelState.IsValid)
            {
                prodb.tbl_product.Add(product);
                return RedirectToAction("Index");
            }
            return View("Prodlist", product);
        }

        private IEnumerable<SelectListItem> GetSelectListItems(IEnumerable<string> elements)
        {
            var selectList = new List<SelectListItem>();

            foreach (var element in elements)
            {
                selectList.Add(new SelectListItem
                {
                    Value = element,
                    Text = element
                });
            }
            return selectList;
        }

        private IEnumerable<string> GetallProductList()
        {
            return new List<string>
            {
                "FRIDGE",
                "WASHING MACHINE",
                "A.C",
            };
        }
    }

查看:

Prodlist.cshtml

<div class="form-group">
            @Html.LabelFor(model => model.ProductName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div>
                @Html.EditorFor(model => model.ProductName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.ProductName, "", new { @class = "text-danger" })
            </div>
        </div>

         //product list
        <div class="form-group">
            @Html.LabelFor(model => model.ProductList, htmlAttributes: new { @class = "control-label col-md-2" })
            <div>
                @Html.DropDownListFor(model => model.ProductList,Model.ProductLists,"Please Select Your Products:", new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.ProductList, "", new { @class = "text-danger" })
            </div>
        </div>

Model1.Context.cs

    // <auto-generated>
    // </auto-generated>
    public partial class ProductEntities : DbContext
    {
        public ProductEntities()
            : base("name=ProductEntities")
        {
        }
        public virtual DbSet<tbl_product> tbl_product { get; set; }
    }

Index.cshtml


@model IEnumerable<DropdownInsertMvc.Models.tbl_product>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ProductName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ProductList)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ProductName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductList)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ProductID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ProductID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ProductID })
        </td>
    </tr>
}

</table>

当我在监视窗口中调试时:

  • ProductList "FRIDGE" 字符串
  • ProductLists 计数 = 3 System.Collections.Generic.IEnumerable {System.Collections.Generic.List}
  • ProductName“电子”字符串

记录没有插入数据库??

【问题讨论】:

  • 在添加之后缺少 prodb.SaveChanges();

标签: c# asp.net-mvc


【解决方案1】:

您在Prodlist 方法中在prodb.tbl_product.Add(product); 之后错过了prodb.SaveChanges()

有关SaveChanges()的更多信息,您可以关注link

【讨论】:

    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多