我正在创建一个Trailer对于现有的Driver(可以从下拉列表中选择)。
@Html.DropDownListFor(x => x.Driver.driverID, (SelectList)ViewBag.DriverID, "-- Please Select -- ", new { @class = "form-control" })
对于 CREATE 函数来说它工作得很好。
//Create Get
public ActionResult Create()
{
ViewBag.DriverID = new SelectList(db.Drivers, "driverID", "driverFullName");
return View();
}
对于编辑功能(编辑拖车号码并离开司机NULL) 这是行不通的。
//Edit Get
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Trailer trailer = db.Trailers.Find(id);
if (trailer == null)
{
return HttpNotFound();
}
ViewBag.DriverID = new SelectList(db.Drivers.ToList(), "driverID", "driverFullName");
return View(trailer);
}
我有- 请选择 -在下拉列表中作为第一个空值.
我怎么能放一个NULL第一个空值的值(因此预告片将具有NO从下拉列表中选择驱动程序?
这是因为你的driverID
财产在Drivers
类不是nullable ?
这就是为什么当你选择-- Please Select --
它给出验证消息The driverID field is required
所以你应该设置driverID
to nullable
like
public int? driverID {get;set;}
现在它的默认值是null
当你选择-- Please Select --
Edit
另一种方法是手动添加默认对象,例如
in view
@Html.DropDownListFor(x => x.Driver.driverID, (SelectList)ViewBag.DriverID, new { @class = "form-control" })
并在编辑操作中
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Trailer trailer = db.Trailers.Find(id);
if (trailer == null)
{
return HttpNotFound();
}
var list = db.Drivers.ToList();
list.Insert(0, new Drivers() {driverFullName = "-- Please Select --"});
ViewBag.DriverID = new SelectList(list, "driverID", "driverFullName"); //showing the list of drivers on edit page
return View(trailer);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)