use*_*619 5 asp.net entity-framework asp.net-mvc-4 drop-down-menu
我正在使用带有EF的VS2012 MVC 4.我想创建一个视图,用户可以上传电影标题和类型(actionmovie,scifi等来自下拉列表!),并将其存储在数据库中.
模型:
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; }
}
Run Code Online (Sandbox Code Playgroud)
如果我是对的,我成功地在Type和Movie表之间创建了One to Many关系.
控制器:
[HttpPost]
[Authorize]
public ActionResult NewMovie(Movie movie)
{
db.Movies.Add(movie);
db.SaveChanges();
return View(movie);
}
Run Code Online (Sandbox Code Playgroud)
查看:
@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" />
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何在视图中制作这个Dropdownlist,并以最安全的方式在控制器中为它制作具体细节(我想我应该从movie.typeid或Type类中创建一个列表/可枚举)
如果你能帮帮我,我会很高兴的!谢谢
我使用 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;
Run Code Online (Sandbox Code Playgroud)
您只能将一个模型传递给视图。从你的代码中你正在传递电影模型所以把
public List<SelectListItem> MovieList { get; set; }
Run Code Online (Sandbox Code Playgroud)
在你的模型中。然后在视图上您可以像这样构建下拉列表
@Html.DropDownListFor(x => x.Id, Model.MovieList)
Run Code Online (Sandbox Code Playgroud)
如果您有任何疑问,请告诉我。
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |