验证子对象

时间:2012-10-18 13:00:44

标签: asp.net-mvc-3 validation jquery-validate

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

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

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

有没有其他方法可以在表格上选择汽车?

2 个答案:

答案 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();
}