0

したがって、次のコードを使用する作成カミソリ ビューのドロップダウン リストをプルする Viewbag があります。

コントローラ

 ViewBag.ActionTypes = new SelectList(query.AsEnumerable(), "ActionTypeID", "ActionTypeTitle");

次に、Razor がこれを行います。

  @Html.DropDownList("ActionTypeID", (IEnumerable<SelectListItem>)ViewBag.ActionTypes)

Post メソッドに何を入れるか、ドロップダウン リストから値を取得する方法がわかりません。

誰でも私を正しい方向に向けることができますか

4

1 に答える 1

1

ActionType というモデルがあるとします。

public class ActionType
{
    public int ActionTypeID { get; set; }

    ...
}

SelectList がこの同じプロパティ名を使用しているため、ModelBinder は正しい POSTed 値の設定を処理します。

new SelectList(query.AsEnumerable(), "ActionTypeID", "ActionTypeTitle");
--------------------------------------------^

アクションで使用している Model クラスに同じ名前のプロパティを追加することを忘れないでください。

-------------------------------v  Add the property to this class.
[HttpPost]
public ActionResult Create(SomeModel model)
{
}

これが例です。次のエンティティが Entity Framework によって既に生成されているとします。

Person       Country
-------      -------
PersonID     CountryID
FullName     Name
CountryID


[HttpPost]
public ActionResult Create(PersonModel model)
{
    if (ModelState.IsValid)
    {
        DbEntities db = new DbEntities();
        Person person = new Person();
        person.FullName = model.FullName;
        person.CountryID = model.CountryID; // This value is from the DropDownList.

        db.AddToPersons(person);
        db.SaveChanges();

        return RedirectToAction("Index", "Home");       
    }

    // Something went wrong. Redisplay form.
    return View(model);
}

POSTed ID 値をエンティティ オブジェクトの外部キー プロパティに設定するだけです。

于 2012-07-14T19:30:35.277 に答える