3

私がこのようなモデルを持っているとしましょう(元のモデルから簡略化されています):

public class Location
{
    public int ID { get; set; }
    public string BinNumber { get; set; }
}

public class Item
{
    public int ID { get; set; }
    public string Description { get; set; }
    public virtual Location Bin { get; set; }
}

public class LineOnPickList
{
    public int ID { get; set; }
    public virtual Item Item { get; set; }
}

ここでLineOfPickListの作成ビューで行う通常のことは、すべてのアイテムの説明をリストしたドロップダウンリストを作成し、[作成]をクリックしたときに選択したアイテムを新しく作成されたLineOnPickListレコードに配置することです。

ただし、私がする必要があるのは、ロケーションBinNumbersのドロップダウンリストを表示することですが、新しく作成されたLineOnPickListレコードにそのロケーションに関連付けられたアイテムがまだあります。

それはどのように行われますか?

4

1 に答える 1

2

ドロップダウンのビューモデルを定義する

public class ItemViewModel
{
    public int ID { get; set; }
    public string BinNumber { get; set; }
}

次に、次のようにコントローラーアクションでドロップダウンリストデータを作成します

public class CreateLineOnPickListViewModel
{
    public int ItemId { get; set; }
    public IEnumerable<ItemViewModel> Items { get; set; }
}

public ActionResult Create()
{
    var model = new CreateLineOnPickListViewModel();
    model.Items = db.Items
          .Select(i => new ItemViewModel { ID = i.ID, BinNumber = i.Bin.BinNumber });

    return View(model);
}

それからあなたの見解では

@model CreateLineOnPickListViewModel

@Html.DropDownListFor(m => m.ItemId, new SelectList(Model.Items, "ID", "BinNumber"), "-")

次に、コントローラーのアクション後のメソッドは次のようになります。

public ActionResult Create(CreateLineOnPickListViewModel model)
{
    var item = new Item { ID = model.ItemID };
    db.Items.Attach(item);

    var lineOnPickList = new LineOnPickList { Item = item };

    db.SaveChanges();

    return View(model);
}
于 2012-09-02T02:26:45.467 に答える