我正在使用带有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; } }
如果我是对的,我成功地在Type和Movie表之间创建了One to Many关系.
控制器:
[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" /> }
我真的不知道如何在视图中制作这个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;
public List<SelectListItem> MovieList { get; set; }
在你的模型中.然后在视图中,您可以像这样构建下拉列表
@Html.DropDownListFor(x => x.Id,Model.MovieList)
如果您有任何疑问,请告诉我.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。