我有一个包含子对象的对象。例如
public class Person
{
public string Name { get; set; }
public Car Car { get; set; }
}
public class Car
{
public int CarId{get;set;
public string Name { get; set; }
public string Year { get; set; }
}
然后在我的Razor视图中,我使用DropDownlistFor,以及用户可以选择的汽车列表。我将下拉列表绑定为
@Html.LocalLabelFor(m => m.Person.Car)
@Html.DropDownListFor(m => m.Person.Car, new SelectList(Model.Cars, "CarID, "Name"), "Select")
当用户未选择汽车时,jquery验证仍会将CarId验证为未被选中。汽车对象必须可以为空。
我知道我可以通过创建一个平面视图模型来解决这个问题。
有没有其他方法可以在表格上选择汽车?
答案 0 :(得分:1)
让CarId可以为空:
public class Car
{
public int? CarId { get; set };
public string Name { get; set; }
public string Year { get; set; }
}
答案 1 :(得分:0)
清除控制器操作中模型状态的错误
对于前。
[HttpPost]
public ActionResult Save(Person person)
{
if (person.Car != null && person.Car.CarId == 0)
{
if (ModelState.ContainsKey("Car.CarId"))
ModelState["Car.CarId"].Errors.Clear();
}
return View();
}