2

我有一个包含子对象的对象。例如。

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 验证为未选择。汽车对象必须可以为空。

我知道我可以通过创建一个平面视图模型来解决这个问题。

有没有其他方法可以让汽车在表格上成为可选的?

4

2 回答 2

1

只需让 CarId 可以为空:

public class Car
 {
     public int? CarId { get; set };
     public string Name { get; set; }
     public string Year { get; set; }
 }
于 2012-10-18T13:19:30.720 回答
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();
}
于 2012-10-18T14:34:12.777 回答