如何将下拉选择的值插入数据库

时间:2017-10-13 13:16:59

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-3

我有一个下拉列表,这个值来自另一个表,因此在此下拉列表中选择的值插入到另一个表中

see our image

 <div class="col-lg-4">
                    <fieldset class="form-group">
                        @Html.LabelFor(model => model.CompanytypeID, new { @class = "form-label semibold" })
                        @Html.DropDownList("CompanyType", null, "--- Select CompanyType Name ---", new { @class = "select2-arrow" })
                        @Html.ValidationMessageFor(model => model.CompanytypeID, "", new { @style = "color:red" })
                    </fieldset>
                </div>



public void CompanyType_Bind()
        {
            DataSet ds = dDSP.Get_CompanyType();
            List<SelectListItem> companylist = new List<SelectListItem>();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                companylist.Add(new SelectListItem { Text = dr["CompanyType"].ToString(), Value = dr["CompanytypeID"].ToString() });
            }
            ViewBag.CompanyType = companylist;
        }




public DataSet Get_CompanyType()
        {
            SqlCommand cmd = new SqlCommand("Select * From UserType", constr);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds;
        }

Error page

2 个答案:

答案 0 :(得分:0)

您没有将代码的下拉列表绑定到部门模型的任何属性。

@Html.DropDownList("CompanyType", null, "--- Select CompanyType Name ---", new { @class = "select2-arrow" })

将生成名为CompanyType的select元素。

您可以在Validator代码中看到要将其绑定到CompanytypeID

最简单的方法是将Dropdown声明更改为DropDownListFor并将其“绑定”到CompanytypeID

<div class="col-lg-4">
                    <fieldset class="form-group">
                        @Html.LabelFor(model => model.CompanytypeID, new { @class = "form-label semibold" })
                        @Html.DropDownListFor(m => m.CompanytypeID, ViewBag.CompanyType as IEnumerable<SelectListItem>, "--- Select CompanyType Name ---", new { @class = "select2-arrow" })
                        @Html.ValidationMessageFor(model => model.CompanytypeID, "", new { @style = "color:red" })
                    </fieldset>
                </div>

很高兴看到你的整个cshtml页面。

我还建议使用ViewModels。看起来你正在回复你的实体模型,这就是你把这个列表放在ViewBag中的原因。

答案 1 :(得分:0)

您的SELECT元素名称应与您的属性名称匹配。使用当前代码,您将生成名为&#34; CompanyType&#34;的select元素,但在您的视图模型(Department)中,您的属性名称为CompanyTypeId

要使模型绑定起作用,输入元素名称应与属性名称匹配。因此,对SELECT元素使用相同的名称,你应该很好。

@Html.DropDownListFor(x=>x.CompanyTypeId, ViewBag.CompanyType as List<SelectListItem>,
                      "Select CompanyType", new { @class = "select2-arrow" })

更进一步,不要发布链接到代码的图像。而是在问题本身中包含相关代码。