如何使用formcollection在MVC中的数据库中插入下拉选定文本

时间:2016-06-09 07:51:09

标签: c# asp.net-mvc asp.net-mvc-4 razor

我想从数据库的下拉框中存储文本值,但我不能这样做。

我的代码如下:

[HttpPost]
public ActionResult AddMachine(FormCollection fc, HttpPostedFileBase file) {
 admachinecat();

 //admachinesubcat();
 ad.machinetype = fc["Drop"];
 ad.machinesubtype = fc["sDrop"];
 ad.machinesub_subtype = fc["subDrop"];

 ad.modelnum = fc["modelnum"];
 ad.menufacture = fc["Manufacturer"];
 ad.manufacturecat = fc["modelcat"];
 ad.File = file;
 ad.productspec = fc["product_speci"];
 ad.productdetail = fc["Editor1"];

 if (ModelState.IsValid) {
  int result = dab.admachine(ad);
  ViewData["result"] = result;
  ModelState.Clear();

  return View();
 } else {
  ModelState.AddModelError("", "error in saving data");
  return View();
 } 
}


public void admachinecat() {

  DataSet ds = dab.subcatdropdown();
  ViewBag.menulist = ds.Tables[0];
  List < SelectListItem > branchitems = new List < SelectListItem > ();
  branchitems.Add(new SelectListItem {
   Text = "---select---",
    Value = "0",
  });
  foreach(DataRow dr in ViewBag.menulist.Rows) {
   branchitems.Add(new SelectListItem {
    Text = @dr["Category_Name"].ToString(), Value = @dr["Category_Id"].ToString()
   });
  }
  ViewBag.Drop = branchitems;
}

在数据库访问层中:

public DataSet subcatdropdown()
{
    SqlCommand cmd = new SqlCommand("select Category_Id,Category_Name from Category", con);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds);
    return ds;
}

在HTML页面中:

<div class="col-sm-6">@Html.DropDownList("Drop")</div>

1 个答案:

答案 0 :(得分:0)

而不是表单集合,如果你使用model更好。任何人都可以使用隐藏的帮助器来完成它。 尝试使用jquery来获取下面的文本..

脚本:

<script type="text/javascript">
    $(document).ready(function () {
      $('#SelectedCategoryId').change(function () {
var SelectedCategory = $('#SelectedCategoryId option:selected').text();
          $('#hiddenStateId').val(SelectedCategory);
      });
    });
</script>

Html:

@Html.DropDownList("Drop",new { id = "SelectedCategoryId")
@Html.Hidden("SelectedCategory", new { id = "hiddenStateId" })

现在使用fc

在控制器中调用SelectedCategory
ad.category = fc["SelectedCategory"];