0

mysql データベースから受け取った値を含むドロップダウン リストをロードしたいと考えています。

これは私のViewModelにあるものです:

public int ProjectID { get; set; }
public IEnumerable<SelectListItem> Projects { get; set; }

私のコントローラーで関数を作成します:

public ActionResult Create(DeliverableViewModel model)
    {
        var projects = (repository.GetProjects()).ToList();
        ViewBag.Projects = projects;

        if (ModelState.IsValid)
        {
            try
            {

                repository.AddDeliverable(model.ProjectID);
            }
            catch (ArgumentException ae)
            {
                ModelState.AddModelError("", ae.Message);
            }
            return RedirectToAction("Index");
        }

        return View(model);
    }

プロジェクトをリポジトリにロードします。(値: project_id および project_name)

これは私の作成ビューです:

    @model GDMfrontEnd.Models.DeliverableViewModel

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

    @using (Html.BeginForm("Create", "Deliverable", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        @Html.ValidationSummary(true)

            <div class="editor-field">
                 @Html.DropDownListFor(model => model.Projects,
       new SelectList(ViewBag.Projects,
        "project_id", "project_name"))
            </div>
            <p>
                <input type="submit" value="Create" />
            </p>

    }

しかし今、選択した値から自分の ProjectID を自分のリポジトリに与えるにはどうすればよいでしょうか?

4

2 に答える 2

4

仮定:

class DeliverableViewModel 
{
    public int ProjectID { get; set; }
    public IEnumerable<SelectListItem> Projects { get; set; }
}

次のようになります。

@Html.DropDownListFor(model => model.ProjectID,
    new SelectList(Model.Projects, "project_id", "project_name", Model.ProjectID))

Model.ProjectIDこのフィールドを初期化しない場合は last を省略できますが、おそらく編集で使用します。

于 2013-06-01T20:45:03.297 に答える