如何将下拉选择的值插入数据库
how to insert dropdown selected value into database
我有一个下拉列表这个值来自另一个 table 所以在这个下拉列表中选择的值插入另一个 table
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
您还没有将代码的下拉列表绑定到部门模型的任何 属性。
@Html.DropDownList("CompanyType", null, "--- Select CompanyType Name ---", new { @class = "select2-arrow" })
将生成一个名为 CompanyType 的 select 元素。
从您的验证器代码中您可以看到您想要将其与 CompanytypeID 相关联
最简单的方法是将下拉列表声明更改为 DropDownListFor,"bind" 将其更改为 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。看起来您正在 POST 返回您的实体模型,这就是您将此列表放入 ViewBag 的原因。
您的 SELECT 元素名称应与您的 属性 名称匹配。使用您当前的代码,您正在生成名称为 "CompanyType" 的 select 元素,但在您的视图模型 (Department
) 中,您的 属性 名称为 CompanyTypeId
。
要使模型绑定起作用,输入元素名称应与 属性 名称匹配。因此,为您的 SELECT 元素使用相同的名称,您应该是好的。
@Html.DropDownListFor(x=>x.CompanyTypeId, ViewBag.CompanyType as List<SelectListItem>,
"Select CompanyType", new { @class = "select2-arrow" })
更进一步,不要 post link 代码的图像。而是在问题本身中包含相关代码。
我有一个下拉列表这个值来自另一个 table 所以在这个下拉列表中选择的值插入另一个 table
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
您还没有将代码的下拉列表绑定到部门模型的任何 属性。
@Html.DropDownList("CompanyType", null, "--- Select CompanyType Name ---", new { @class = "select2-arrow" })
将生成一个名为 CompanyType 的 select 元素。
从您的验证器代码中您可以看到您想要将其与 CompanytypeID 相关联
最简单的方法是将下拉列表声明更改为 DropDownListFor,"bind" 将其更改为 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。看起来您正在 POST 返回您的实体模型,这就是您将此列表放入 ViewBag 的原因。
您的 SELECT 元素名称应与您的 属性 名称匹配。使用您当前的代码,您正在生成名称为 "CompanyType" 的 select 元素,但在您的视图模型 (Department
) 中,您的 属性 名称为 CompanyTypeId
。
要使模型绑定起作用,输入元素名称应与 属性 名称匹配。因此,为您的 SELECT 元素使用相同的名称,您应该是好的。
@Html.DropDownListFor(x=>x.CompanyTypeId, ViewBag.CompanyType as List<SelectListItem>,
"Select CompanyType", new { @class = "select2-arrow" })
更进一步,不要 post link 代码的图像。而是在问题本身中包含相关代码。