2012-12-29 55 views
3

免責聲明:我是新的C#.Net和MVC。這也是我的第一個ViewModel。C#MVC 4視圖模型導致的DropDownList有錯誤的名稱

我有一個看起來像這樣的視圖模型。

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> 

這一切工作正常,大部分。問題是,一旦我發佈表單,Project.ProjectID值爲0,因爲下拉列表中的NAME屬性是「ProjectTypeID」而不是「Project.ProjectTypeID」。如何獲得下拉列表以使其名稱正確,以便它可以正確發佈,並且可以更新Project表中的記錄?

+2

是有一些問題,使用'@ Html.DropDownList( 「Project.ProjectTypeID」,(的SelectList)ViewBag.Types)'? –

回答

3

嘗試使用輔助擴展方法的另一個重載:

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

好吧,那太容易了,太讓人生氣了,非常感謝! –