1

私はMVCを初めて使用します。私は次のRazorコードを持っています:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset style="margin:5px">
        <legend>List a Bicycle for Sale</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.BicycleManfacturer)
        </div>
        <div class="editor-field">
            @Html.DropDownList("ManufacturerList")
        </div>

        ....
        ....


        <div class="float-right">
            <input type="submit" value="List Bike" />
        </div>
    </fieldset>
}

「ManufacturerList」はSelectedListItem、ViewBagに保存されているリストです(すべてのドロップダウンリストのモデルを作成したくありませんでした)。これは、次の方法でビルドされます。

    private void HydrateManufacturerList()
    {
        var manufacturerList = (from row in db.BicycleManufacturer.ToList()
                                select new SelectListItem
                                {
                                    Text = row.Description,
                                    Value = row.BicycleManufacturerId.ToString()
                                }).ToList();
        manufacturerList.Add(new SelectListItem
        {
            Text = "-- Select Manufacturer --",
            Value = "0",
            Selected = true
        });
        ViewBag.ManufacturerList = manufacturerList.OrderBy(row => row.Text);
    }

送信が完了すると呼び出される次のコードがあります。

    [HttpPost]
    public ActionResult Create(BicycleSellerListing bicyclesellerlisting)
    {
        bicyclesellerlisting.ListingDate = System.DateTimeOffset.Now;

        if (ModelState.IsValid)
        {
            db.BicycleSellerListing.Add(bicyclesellerlisting);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(bicyclesellerlisting);
    }

ユーザーがビューをコントローラーにポストバックし、このメソッドが実行されたときに、ドロップダウンリストから選択したメーカーを取得する方法がわかりません。

4

1 に答える 1

1

使用する

public ActionResult Create(BicycleSellerListing bicyclesellerlisting, FormCollection collection)
{ 
  ...

ドロップダウンリストの名前に応じて、collection["ManufacturerList"]などのドロップダウンで選択したアイテムを含むすべての入力を取得できます。

于 2013-02-21T16:33:21.713 に答える