1

基本的に、 Ownerの詳細を含むビューが必要です。Ownerは複数のタイプのVehicleを持つことができ (またはなし)、チェックボックスで選択できます。

インデックス ビュー

送信時に、データベースを更新する必要があります。これは、次に所有者がビューに表示されるときに、所有者正しいチェックボックスがオンになっている必要があるためです。

EF モデルを構築する方法がわかりません。また、EF モデルを正しくリンクして目的の結果が得られるかどうかもわかりません。

膨大な数の車両が存在するため、 Vehicleの種類をフィールドとしてOwnerオブジェクトにハードコーディングしたくありません。

これらのモデルをリンクする方法の正しい方向を教えてもらえますか? データベースに 2 つまたは 3 つのテーブルが必要ですか?

これは私が現時点で持っているものですが、おそらく間違っています。アイデアがある場合は、混乱を避けるために今すぐ読むのをやめてください。 どんなコメントでも大歓迎です!

モデル:

public class Vehicle
{
    public int VehicleID { get; set; }
    public string Name { get; set; }
}

public class Owner
{
    public int OwnerID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<OwnerVehicle> OwnerVehicles { get; set; }
}

public class OwnerVehicle
{
  public int OwnerVehicleID { get; set; }

  public bool Ticked { get; set; }
  //Not sure if this is needed, because ticked will always be true
  //I delete OwnerVehicle if not needed

  public int OwnerID { get; set; }
  public virtual Owner Owner { get; set; }

  public int VehicleID { get; set; }
  public virtual Vehicle  Vehicle { get; set; }
}

コントローラー:

public ActionResult Index()
    {
        //prepopulate Owner objects on the fly for this example, in my project it would fetched/created with EF into database
        Owner owner = getOwner();
        return View(owner); // we return the owner to view
    }

    public Owner getOwner()
    {
        //Create a owner
        Owner owner = new Owner() { OwnerID = 1, Name = "JACK" };

        //Create a list of vehicles
        List<Vehicle> Vehicles = new List<Vehicle>();
        Vehicles.Add(new Vehicle() { VehicleID = 1, Name = "I have a car"});
        Vehicles.Add(new Vehicle() {VehicleID = 1, Name = "I have a bike" });

        //the owner doesnt have any vehicles yet, therefor object OwnerVehicle is null at the moment

        return owner;
    }

    [HttpPost]
    public ActionResult Index(Owner owner)
    {   
        //at this point, the owner needs have his list of Vehicles linked, and written to database
        //
        //ToDO
        //return View();
    }

私が迷っているので、以下のビューはコンパイルされません。
インデックス.cshtml

    @model Owner
    @using (Html.BeginForm())
    {
          <div class="editor-field">
                @Html.EditorFor(model => model.OwnerVehicles)
            </div>
    }

EditorTemplates/OwnerVehicles.cshtml

    @model OwnerVehicle
    <div>
        @Html.CheckBoxFor(x => x.Ticked)
        @Html.LabelFor(x => x.TODO, Model.TODO)
        @Html.HiddenFor(x => x.TODO)
    </div>
4

2 に答える 2

0

CptRobby は、Web をさらに深くクロールするのに役立ち、私の質問がこれと重複していることがわかりまし

Ciaran Bruen が素晴らしいチュートリアルを作成しました。このチュートリアルはここにあります。ページの左側にダウンロード可能なソリューションがあります。

多対多の関係、チェックボックスの作成、およびデータベースの更新方法を示します。

于 2013-07-24T12:21:22.107 に答える