简体   繁体   English

如何在asp.net mvc中使用下拉列表在数据库中插入记录?

[英]How to Insert a record in database using dropdownlist In asp.net mvc?

I m implement a drop-down list with entity framework database first approach in asp.net MVC??我在asp.net MVC中使用实体框架数据库第一种方法实现了一个下拉列表?

I implement a drop-down list in MVC and when IM debugging In watch Window My Inserted Record Is display but Not Inserted In Database that is an issue??我在 MVC 中实现了一个下拉列表,当在监视窗口中进行 IM 调试时,我插入的记录显示但未插入到数据库中,这是一个问题吗??

DatabaseField Name:数据库字段名称:

tbl_product tbl_product

  • ProductID int产品 ID 整数
  • ProductName varchar(50)产品名称 varchar(50)
  • ProductList varchar(50)产品列表 varchar(50)

tbl_product.cs 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家庭控制器.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",
            };
        }
    }

view:看法:

Prodlist.cshtml产品列表.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 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索引.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>

When I m Debugging In Watch Window:当我在观察窗口中调试时:

  • ProductList "FRIDGE" string产品列表“冰箱”字符串
  • ProductLists Count = 3 System.Collections.Generic.IEnumerable {System.Collections.Generic.List}产品列表计数 = 3 System.Collections.Generic.IEnumerable {System.Collections.Generic.List}
  • ProductName "Electronics" string产品名称“电子”字符串

record is not inserted in the database??记录没有插入数据库??

You missed prodb.SaveChanges() after prodb.tbl_product.Add(product);prodb.tbl_product.Add(product);之后你错过了prodb.SaveChanges() prodb.tbl_product.Add(product); in Prodlist method.Prodlist方法中。

for more information about SaveChanges() you can follow this link有关SaveChanges()更多信息,您可以点击此链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM