0

保存されたデータベース レコードを編集する作業中の MVC 4 編集ビューがあります。これは、コントローラーの関連セクションです。

    //
    // GET: /Occurrence/Edit/5

public ActionResult Edit(int id = 0)
    {
        Occurrence occurrence = db.Occurrences.Find(id);
        if (occurrence == null)
        {
            return HttpNotFound();
        }

        List<SelectListItem> points = new List<SelectListItem>()
        { 
            new SelectListItem() { Text = "0 - (No Points)", Value = "0"},
            new SelectListItem() { Text = "1 - (5 to 14 minutes)", Value = "1"},
            new SelectListItem() { Text = "2 - (15 minutes to 1 hour)", Value = "2"},
            new SelectListItem() { Text = "3 - (1 to 3 hours)", Value = "3"},
            new SelectListItem() { Text = "5 - (Over 3 hours)", Value = "5"},
        };

        ViewBag.Points = points;

        ViewBag.EmployeeID = new SelectList(db.Employees, "EmployeeID", "EmployeeName", occurrence.EmployeeID);
        return View(occurrence);
}

これは、モデルのポイント セクションです。

[Required(ErrorMessage = "The Points field is required.")]
public int Points { get; set; }

そして、これは編集ビューの関連セクションです。

    <div class="editor-field">
        @Html.DropDownList("Points")
        @Html.ValidationMessageFor(model => model.Points)
    </div>

レコードを編集しようとすると、データベースに保存されている値に関係なく、ポイントのドロップダウン リストに常に「0 - (ポイントなし)」が入力されます。このドロップダウンリストをバインドして、保存された値を編集ビューに表示する方法はありますか?

4

1 に答える 1

0

フィールドをプロパティに接続するには、DropDownListFor を使用する必要があります。モデルのオプションをビューに渡す必要があります。ビュー モデルを作成し、オカレンスとオプションの両方を渡す必要があります。次に、DropDownListFor を使用します

public class ViewModel {

    public List<SelectListItem> PointOptions { get; set; }

    [Required(ErrorMessage = "The Points field is required.")]
    public int Points { get; set; }
}

ViewBag を使用する代わりに、それらをコントローラーに入力し、それを渡します。次に、DropDownListFor を使用します。

@Html.DropDownListFor(m => m.Points, Model.PointOptions)

*For メソッドは、関連するすべての「グー」を html に接続します。自動入力された値と、次の投稿での正しいバインディングが保証されます。

幸運を。

于 2012-11-28T22:12:13.147 に答える