获取导航属性ID的操作方法

时间:2014-12-07 18:25:53

标签: c# asp.net-mvc asp.net-mvc-4 entity-framework-5 navigation-properties

我有3个模特名称图片,游戏和imageviewmodel

public class game
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]

    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public virtual ICollection<images> Image { get; set; }

}
public class images
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]

    public int Id { get; set; }
    [Required]
    [DataType(DataType.ImageUrl)]
    public string Image1Url { get; set; }
    public virtual game Game { get; set; }

}
public class ImageViewModel
{
    [Required]
    [DataType(DataType.Upload)]
    public HttpPostedFileBase ImageUpload { get; set; }
    public virtual game Game { get; set; }

}
public class GameDb : DbContext
{
    public DbSet<game> Games { get; set; }
    public DbSet<images> Images { get; set; }
 }

我的观点是imageviewmodel的强类型视图。我有一个下拉列表,所有游戏都填满了这是我的GET创建方法

public ActionResult Create()
        {
            ViewBag.GameId = new SelectList(db.Games, "Id", "Name");
            return View(new ImageViewModel());
        }

我的下拉列表中填充了GenreId

 <div class="editor-field">
            @Html.DropDownList("GameId","Select an Item")
        </div

在我的POST创建方法中,我想访问要在图像表中插入的下拉值id

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(ImageViewModel model)
         {
         }

我无法访问下拉列表的游戏ID。我这样做

var img=new images{

Game.( no intellisense) =model.Game.id,

};

如何解决这方面需要一些帮助。

1 个答案:

答案 0 :(得分:0)

首先考虑在为课程命名时遵循naming convensions

其次,请考虑使用DropDownListFor辅助方法而不是DropDownList

最后,您必须先设置新的Game对象实例,然后再设置它的ID:

var img = new images
{
   Game = new game { Id = model.Game.Id }
};