3

免責事項:C#、. Net、MVCは初めてです。これは私の最初のViewModelでもあります。

このようなビューモデルがあります。

 public class ProjectEditIndexData
 {
    public Project Project{ get; set; }
    public List<Characteristic> Chars { get; set; }
    public List<Tag> Tags { get; set; }
    public List<Category> Cats { get; set; }

    public IEnumerable<SelectListItem> Types { get; set; }
}

私のコントローラー

    public ActionResult Edit(int id = 0)
    {
        ProjectEditIndexData project = new ProjectEditIndexData();
        project.Project = db.Projects.Find(id);
        project.Tags = db.Tags.ToList();
        project.Chars = db.Characteristics.ToList();
        project.Cats = db.Categories.ToList();
        project.Types = new SelectList(db.ProjectTypes, "ProjectTypeID", "Type", project.Project.ProjectTypeID);


        if (project == null)
        {
            return HttpNotFound();
        }
        return View(project);
    }

私の見解には、このような線があります。

    @Html.DropDownList("ProjectTypeID", (SelectList)ViewBag.Types)

レンダリングされたHTML

 <select id="ProjectTypeID" name="ProjectTypeID" class="valid">
     <option selected="selected" value="1">Novel</option>
     <option value="2">Type 1</option>
     <option value="3">Type 2</option>
     <option value="4">Type 3</option>
     <option value="5">Type 4</option>
 </select>

これはほとんどすべて正常に機能します。問題は、フォームを投稿すると、ドロップダウンリストのNAME属性が「Project.ProjectTypeID」ではなく「ProjectTypeID」であるため、Project.ProjectIDの値が0になることです。ドロップダウンリストに正しい名前を付けて、正しく投稿し、プロジェクトテーブルのレコードを更新できるようにするにはどうすればよいですか?

4

1 に答える 1

3

ヘルパー拡張メソッドの別のオーバーロードを使用してみてください。

@Html.DropDownList("Project.ProjectTypeID", (SelectList)ViewBag.Types)
于 2012-12-29T21:44:55.843 に答える