2014-02-18 145 views
5

我正在使用VS2012 MVC 4與EF。我想讓用戶可以上傳電影標題和類型(動作電影,科幻等來自下拉列表!),並將其存儲在數據庫中。asp .net mvc 4 dropdownlist

型號:

public class Movie 
{ 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    public string Name { get; set; } 

    [ForeignKey("Type")] 
    public int TypeId { get; set; } 

    public virtual Type Type { get; set; } 
} 

public class Type 
{ 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int TypeId { get; set; } 

    public string TypeName { get; set; } 

    public virtual ICollection<Movie> Movies { get; set; } 
} 

如果我是正確的我已成功一個的類型和電影臺之間一對多的關係。

控制器

[HttpPost] 
    [Authorize] 
    public ActionResult NewMovie(Movie movie) 
    { 
     db.Movies.Add(movie); 
     db.SaveChanges(); 
     return View(movie); 
    } 

查看

@using (Html.BeginForm()) 
    { 
     <table> 
      <tr> 
       <td>@Html.DisplayNameFor(model => model.Name)</td> 
       <td>@Html.DisplayNameFor(model => model.TypeId)</td> 
      </tr> 
      <tr> 
       <td>@Html.TextBoxFor(model => model.Name)</td> 
       <td>@Html.DropDownListFor......... 
      </tr> 
     </table> 
     <input type="submit" value="submit" /> 
    } 

我真的不知道我應該怎麼做這個下拉列表中的視圖,並在做出具體細節吧控制器與最安全方式 (我想我應該做一個列表/ enumera可以從movie.typeid或Type類獲得)

如果你能幫助我,我會很高興!謝謝

回答

4

我使用List作爲我的下拉列表。做你的控制器

List<SelectListItem> ls = new List<SelectListItem>(); 
foreach(var temp in Movies){ 
    ls.Add(new SelectListItem() { Text = temp.Text, Value = temp.Value }); 
} 
Movie.MovieList = ls; 

上這樣你可以生成列表這樣你只能通過一個模型視圖。從你的代碼你傳遞電影模型所以把你的模型

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

在你的模型。然後在視圖上,你可以像這樣建立你的下拉列表

@Html.DropDownListFor(x => x.Id, Model.MovieList) 

讓我知道如果你有任何問題。