下拉列表中的Asp.net MVC多个字段无法回发到数据库

微厨师

我有一个下拉列表,显示数据库中db.Budgets的Code&BudgetCodename。

视图片段如下所示:

 @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()


        <div class="col-md-6">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <div class="panel-btns">
                        <a href="" class="minimize">&minus;</a>
                    </div>
                    <h4 class="panel-title">Block Styled Form</h4>
                    <p>This is an example of form with block styled label.</p>
                </div>
                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                <div class="panel-body">
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group">
                               @Html.LabelFor(model => model.BudgetCodeID, "BudgetCode:", new { @class = "control-label" })
                               @Html.DropDownListFor(m => m.BudgetCodeID, (SelectList)ViewBag.BudgetsList, new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model.BudgetCodeID, "", new { @class = "text-danger" })
                                   </div>

}

控制器看起来像这样:

 public ActionResult Create()
        {


            var Budgets = (from m in db.BudgetCodes
             select new SelectListItem {
              Text = m.Code + "| " + m.BudgetCodeName,
              Value = m.BudgetCodeID.ToString()
          });

        ViewBag.BudgetsList = new SelectList(Budgets, "Value", "Text");

}

下拉菜单看起来不错,并且显示了Code和BudgetCodeName。

但是该框不会将数据回传到sql数据库。没有错误被创建。

我做错了什么?

****编辑****

我曾尝试将控制器文本放置为这样,但它不起作用:

 [HttpPost]
 [ValidateAntiForgeryToken]
   public async Task<ActionResult> Create([Bind(Include = "ClinicalAssetID,AssetTypeID,ProductID,ManufacturerID,ModelID,SupplierID,SerialNo,PurchaseDate,PoNo,Costing,TeamID,StaffID,WarrantyEndDate,InspectionDate,InspectionOutcome,InspectionDocumnets,InspectionDueDate,BudgetCodeID")] ClinicalAsset clinicalAsset)
        {
            if (ModelState.IsValid)
            {
                db.ClinicalAssets.Add(clinicalAsset);
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            ViewBag.AssetTypeID = new SelectList(db.AssetTypes, "AssetTypeID", "AssetTypeName", clinicalAsset.AssetTypeID);
            ViewBag.ProductID = new SelectList(db.Products, "ProductID", "ProductName", clinicalAsset.ProductID);
            ViewBag.ModelID = new SelectList(db.Models, "ModelID", "ModelName", clinicalAsset.ModelID);
            ViewBag.ManufacturerID = new SelectList(db.Manufacturers, "ManufacturerID", "ManufacturerName", clinicalAsset.ManufacturerID);
            ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "SupplierName", clinicalAsset.SupplierID);
            ViewBag.TeamID = new SelectList(db.Teams, "TeamID", "TeamName", clinicalAsset.TeamID);
            ViewBag.StaffID = new SelectList(db.Staffs, "StaffID", "StaffName", clinicalAsset.StaffID);
            ViewBag.InspectionOutcomeID = new SelectList(db.InspectionOutcomes, "InspectionOutcomeID", "InspectionOutcomeResult", clinicalAsset.InspectionOutcomeID);
            var Budgets = (from m in db.BudgetCodes
                           select new SelectListItem
                           {
                               Text = m.Code + " | " + m.BudgetCodeName,
                               Value = m.BudgetCodeID.ToString()
                           });
            ViewBag.BudgetsList = new SelectList(Budgets, "Value", "Text");
            return View(clinicalAsset);
        }

****更新****

我发现从控制器中删除异步确实会将整数回发到表中。然后如何使其与异步一起工作?还是如果我不希望由于用户群太少而导致繁重的负载或带宽问题,是否应该完全放弃异步?

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "ClinicalAssetID,AssetTypeID,ProductID,ManufacturerID,ModelID,SupplierID,SerialNo,PurchaseDate,PoNo,Costing,TeamID,StaffID,WarrantyEndDate,InspectionDate,InspectionOutcome,InspectionDocumnets,InspectionDueDate, BudgetCodeID")] ClinicalAsset clinicalAsset)
        {
            if (ModelState.IsValid)
            {
                db.ClinicalAssets.Add(clinicalAsset);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.AssetTypeID = new SelectList(db.AssetTypes, "AssetTypeID", "AssetTypeName", clinicalAsset.AssetTypeID);
            ViewBag.ProductID = new SelectList(db.Products, "ProductID", "ProductName", clinicalAsset.ProductID);
            ViewBag.ModelID = new SelectList(db.Models, "ModelID", "ModelName", clinicalAsset.ModelID);
            ViewBag.ManufacturerID = new SelectList(db.Manufacturers, "ManufacturerID", "ManufacturerName", clinicalAsset.ManufacturerID);
            ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "SupplierName", clinicalAsset.SupplierID);
            ViewBag.TeamID = new SelectList(db.Teams, "TeamID", "TeamName", clinicalAsset.TeamID);
            ViewBag.StaffID = new SelectList(db.Staffs, "StaffID", "StaffName", clinicalAsset.StaffID);
            ViewBag.InspectionOutcomeID = new SelectList(db.InspectionOutcomes, "InspectionOutcomeID", "InspectionOutcomeResult", clinicalAsset.InspectionOutcomeID);
            var Budgets = (from m in db.BudgetCodes
                           select new SelectListItem
                           {
                               Text = m.Code + " | " + m.BudgetCodeName,
                               Value = m.BudgetCodeID.ToString()
                           });
            ViewBag.BudgetsList = new SelectList(Budgets, "Value", "Text");
            return View(clinicalAsset);
        }

``````
微厨师

我发现从控制器中删除异步确实会将整数回发到表中。

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "ClinicalAssetID,AssetTypeID,ProductID,ManufacturerID,ModelID,SupplierID,SerialNo,PurchaseDate,PoNo,Costing,TeamID,StaffID,WarrantyEndDate,InspectionDate,InspectionOutcome,InspectionDocumnets,InspectionDueDate, BudgetCodeID")] ClinicalAsset clinicalAsset)
        {
            if (ModelState.IsValid)
            {
                db.ClinicalAssets.Add(clinicalAsset);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.AssetTypeID = new SelectList(db.AssetTypes, "AssetTypeID", "AssetTypeName", clinicalAsset.AssetTypeID);
            ViewBag.ProductID = new SelectList(db.Products, "ProductID", "ProductName", clinicalAsset.ProductID);
            ViewBag.ModelID = new SelectList(db.Models, "ModelID", "ModelName", clinicalAsset.ModelID);
            ViewBag.ManufacturerID = new SelectList(db.Manufacturers, "ManufacturerID", "ManufacturerName", clinicalAsset.ManufacturerID);
            ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "SupplierName", clinicalAsset.SupplierID);
            ViewBag.TeamID = new SelectList(db.Teams, "TeamID", "TeamName", clinicalAsset.TeamID);
            ViewBag.StaffID = new SelectList(db.Staffs, "StaffID", "StaffName", clinicalAsset.StaffID);
            ViewBag.InspectionOutcomeID = new SelectList(db.InspectionOutcomes, "InspectionOutcomeID", "InspectionOutcomeResult", clinicalAsset.InspectionOutcomeID);
            var Budgets = (from m in db.BudgetCodes
                           select new SelectListItem
                           {
                               Text = m.Code + " | " + m.BudgetCodeName,
                               Value = m.BudgetCodeID.ToString()
                           });
            ViewBag.BudgetsList = new SelectList(Budgets, "Value", "Text");
            return View(clinicalAsset);
        }

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据asp.net mvc5中数据库的值设置下拉列表的值

基于 ASP.NET MVC 中的硬编码下拉列表选择显示数据库中的项目列表

在 ASP.NET MVC 中填充下拉列表的正确方法

如何从ASP.NET MVC中的枚举创建下拉列表?

在ASP.NET MVC中创建下拉列表

如何在Asp .net MVC中验证下拉列表

如何从ASP.NET MVC中的枚举创建下拉列表?

ASP.NET MVC中的从属下拉列表

如何在 ASP.Net MVC 中创建下拉列表

使用类从asp.net中的数据库填充下拉列表的方法是什么?

如何根据asp.net c#中更改的先前下拉数据更改下拉列表?

无法在ASP.NET MVC- C#的级联下拉列表中获取Chil表列表

根据 ASP.NET MVC 5 中另一个下拉列表中的选择填充下拉列表

通过选择下拉列表 ASP.NET Core MVC 从数据库填充多个文本框

如何消除下拉列表中显示的重复数据?在ASP.net中的FormView中?

将asp.net下拉列表控件与要从jquery中的数据库中获取的值绑定

如何使用asp.net mvc在数据库中保存级联下拉列表项

选择下拉列表并保存到数据库asp.net mvc

ASP.NET MVC5 触发 onchange 事件时从数据库填充下拉列表

如何从 ASP.NET Core MVC 的 razor 文件中的下拉列表中获取选定的值

在下拉列表中填充数据未显示在asp-net-core / c#中?

Asp.net 中数据列表中的自动更新下拉项

asp.net mvc下拉列表中的“添加新项”按钮

从asp.net MVC中的下拉列表中保存所选项目

使用 C# 和 ASP.NET MVC 中的 ajax 从 SQL Server 填充下拉列表

如何使 ajax 下拉列表与 ASP.Net MVC 5 中的 ViewModel 强绑定

由模式弹出窗口提交的父页面中的ASP.NET MVC更新下拉列表

ASP.NET MVC-从下拉列表中获取ID

在 ASP.NET MVC 中从 jQuery 获取选定的下拉列表 ID