简体   繁体   English

如何将多个RadioButtonFor值插入数据库

[英]How to insert multiple RadioButtonFor value into database

I want to insert 3 value of radio button into Database using MVC. 我想使用MVC将3个单选按钮的值插入数据库。 User need to select one material for each categories(Walls,Roof,Floor) 用户需要为每个类别(墙壁,屋顶,地板)选择一种材料

在此处输入图片说明

Currently the user can only select one value (may need to do grouping).But when I do grouping only the structInfo value is inserted into database. 当前用户只能选择一个值(可能需要分组)。但是当我分组时,仅将structInfo值插入数据库。 I need all the 3 value inserted into database. 我需要将所有3个值插入数据库。

This is how the database design look like 这就是数据库设计的样子 在此处输入图片说明

the struct inf(walls,roof,floor) the materialinfo is (bricks.concrete,woods, etc) 材质信息的结构inf(墙壁,屋顶,地板)(砖,混凝土,木材等)

So can I make all the 3 value choosed by user save into database? 那么我可以将用户选择的所有3个值都保存到数据库中吗?

This is my view 这是我的看法

 @foreach (var structIN in Model.structInfo)
                {
                    if (structIN.structId.Equals(1))
                    {
                        @Html.Label(structIN.structNm) @:   

                        foreach (var material in Model.materialInfo)
                        {
                            if (material.materialId.Equals(1) || material.materialId.Equals(2) || material.materialId.Equals(3))
                            {
                                @Html.RadioButtonFor(model => model.buildInfo.materialId, material.materialId)@Html.Label(material.materialNm)
                                @Html.HiddenFor(model => model.buildInfo.structId, new { Value = structIN.structId })

                            }

                        }
                    }

                    else if(structIN.structId.Equals(2))
                    {
                        <br />
                        @Html.Label(structIN.structNm) @:&nbsp; &nbsp;

                        foreach (var material2 in Model.materialInfo)
                        {
                            if (material2.materialId.Equals(2) || material2.materialId.Equals(4) || material2.materialId.Equals(5))
                            {
                                @Html.RadioButtonFor(model2 => model2.buildInfo.materialId, material2.materialId)@Html.Label(material2.materialNm)
                                @Html.HiddenFor(model2 => model2.buildInfo.structId, new { Value = structIN.structId })

                            }

                        }
                    }
                    else if (structIN.structId.Equals(3))
                    {
                        <br />
                        @Html.Label(structIN.structNm) @:&nbsp; &nbsp;

                        foreach (var material3 in Model.materialInfo)
                        {
                            if (material3.materialId.Equals(6) || material3.materialId.Equals(3))
                            {
                                @Html.RadioButtonFor(model3 => model3.buildInfo.materialId, material3.materialId)  @Html.Label(material3.materialNm)
                                @Html.HiddenFor(model3 => model3.buildInfo.structId, new { Value = structIN.structId })

                             }
                        }
                }
                }

my GET method 我的GET方法

 [HttpGet]
    public ActionResult RegisterForm()
    {
        PopulateStructMaterialData();
        using (var dataBase = new TMXEntities())
        {
            var model = new RegisterInfoPA()
            {
                //OTHER CODES
            };

            return View(model);
        }
    }

Populating Data 填充数据

        private void PopulateStructMaterialData()
    {
        var list = new List<strucMaterial>
        {
            new strucMaterial{ifOthers = "", materialId = 1, materialNm = "Bricks", structId = 1, structNm = "Walls", insuranceReqId = 0, isSelected = false},
            new strucMaterial{ifOthers = "", materialId = 2, materialNm = "Concrete", structId = 1, structNm = "Walls", insuranceReqId = 0, isSelected = false},
            new strucMaterial{ifOthers = "", materialId = 3, materialNm = "Woods", structId = 1, structNm = "Walls", insuranceReqId = 0, isSelected = false},

            new strucMaterial{ifOthers = "", materialId = 2, materialNm = "Concrete", structId = 2, structNm = "Roof", insuranceReqId = 0, isSelected = false},
            new strucMaterial{ifOthers = "", materialId = 4, materialNm = "Tiles", structId = 2, structNm = "Roof", insuranceReqId = 0, isSelected = false},
            new strucMaterial{ifOthers = "", materialId = 5, materialNm = "Zinc", structId = 2, structNm = "Roof", insuranceReqId = 0, isSelected = false},

            new strucMaterial{ifOthers = "", materialId = 3, materialNm = "Woods", structId = 3, structNm = "Floor", insuranceReqId = 0, isSelected = false},
            new strucMaterial{ifOthers = "", materialId = 6, materialNm = "Reinforced Concrete", structId = 3, structNm = "Floor", insuranceReqId = 0, isSelected = false},

        };
       ViewBag.populatebuilding = list;
    }

In View 视野中

  List<Insurance.ViewModels.strucMaterial> viewModelSM = ViewBag.populatebuilding;
  for(int i=0; i<viewModelSM.Count; i++)
  {
                    @Html.DisplayFor(m => viewModelSM[i].structNm)
                    @Html.HiddenFor(m => viewModelSM[i].structId)

                    @Html.CheckBoxFor(m => viewModelSM[i].isSelected)

                    @Html.HiddenFor(m => viewModelSM[i].materialId)
                    @Html.Label(viewModelSM[i].materialNm)
  }

My POST method 我的POST方法

 [HttpPost]
    public ActionResult RegisterForm(RegisterInfoPA viewmodel, List<strucMaterial> list)
    {
        using (var dataBase = new TMXEntities())
        {
            var model = new RegisterInfoPA()
            {
              //OTHER CODES
            };

            if (ModelState.IsValid)
            {
                //OTHER CODES
                var register = viewmodel.reg;
                var personalinfo = viewmodel.pinfo;

                //Save Register
                db.registers.Add(register);
                db.SaveChanges();
                //Retriving required Id's
                var getid = register.registrationId;
                var getRegTypeID = register.regisTypeId;

                //SAVE PERSONAL INFO
                personalinfo.registrationId = getid;
                db.personalInfoes.Add(personalinfo);
                db.SaveChanges();

              //---HOW SHOULD I SAVE THE CHECKBOX HERE?-----------                                  
              **> tHIS IS MY CODE, BUT IT IS NOT WORKING**
                foreach(var item in list) (<< error starts here)
                {
                    buildingInfo.materialId = item.materialId;
                    buildingInfo.structId = item.structId;
                    buildingInfo.insuranceReqId = item.insuranceReqId;
                    db.buildingInfoes.Add(buildingInfo);
                }
                db.SaveChanges();
            }
       }
    }

I am always getting this error 我总是收到这个错误

System.NullReferenceException: Object reference not set to an instance of an object. System.NullReferenceException:对象引用未设置为对象的实例。

How the proper code should look like? 正确的代码应如何显示? Thank you. 谢谢。

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

相关问题 如何从ASP.NET MVC中的radiobuttonfor中获取选定的值 - How to get selected value from radiobuttonfor in ASP.NET MVC 多个partialViews,RadioButtonFor名称冲突 - multiple partialViews, RadioButtonFor name conflict 如何从 HTML 插入 dan 更新值<select>ASP.NET MVC 中的多个属性到数据库? - How to insert dan update value from HTML <select> multiple Attributes in ASP.NET MVC to database? 如何从aspxgridview复选框dataitemtemplate中将多个check checked / unchecked box值插入数据库? - How to insert multiple check checked/unchecked boxes value into database from aspxgridview checkbox dataitemtemplate? 如何从gridview插入多个行到数据库 - how to insert multiple rows from gridview to database 如何快速删除然后将多个记录插入数据库 - How to quickly delete then insert multiple records into database 对如何将xml值插入数据库感到困惑 - Confused About How to insert xml value into database 如果数据库中有某些值,如何在表上插入 - How Insert on table IF some value is in database 如何根据项目外键值将@ Html.RadioButtonFor分组 - How i can group my @Html.RadioButtonFor according to the Item foreign key value 如何将多个具有相同名称的输入插入数据库? - How to Insert multiple input with same name to database?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM