@ Html.DropDownListFor获取模型中的ID和值以及ID的不同名称

时间:2013-11-14 17:38:34

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

有人可以帮忙解决这个问题吗?

我有一个模特

Product{ID, Name, SupplierID, Supplier}
Supplier {ID, Name}

使用@Html.DropDownListFor我想填充产品的SupplierIDSupplier

我使用

在ProductController中的

public ActionResult Edit(Guid id)
{
    Product product = db.products.Find(id);
    if (product == null)
    {
        return HttpNotFound();
    }
    ViewBag.SupplierId = new SelectList(db.Suppliers, "ID", "Name", product.SupplierID );
    return View(customer);
}

[HttpPost]
public ActionResult Edit(Customer customer)
{
    if (ModelState.IsValid)
    {
        db.Entry(customer).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(customer);
}

db.SaveChanges中,它使用视图抱怨SupplierNULL (model => model.SupplierID,ViewBag.SupplierId as SelectList)

1 个答案:

答案 0 :(得分:2)

我会使用jquery。将所选名称添加到模型中并将其分配给隐藏字段

@Html.HiddenFor(x => x.SelectedName, new { @class = "SelectedName" })

然后在你的脚本中

$('#SupplierID").on('change', function(){
    $('.SelectedName').val($('#SupplierID :selected').text());
});

因此,每次更改下拉列表时,所选名称都会被放入隐藏字段中,并且会从下拉列表中将所选名称传递回控制器。希望这有助于