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 が選択されていないことを検証します。car オブジェクトは null 許容でなければなりません。

フラットなビューモデルを作成することで、これを回避できることはわかっています。

フォームで車をオプションにする他の方法はありますか?

4

2 に答える 2

1

CarIdをnull許容にするだけです:

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 に答える