我有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,
};
如何解决这方面需要一些帮助。
答案 0 :(得分:0)
首先考虑在为课程命名时遵循naming convensions。
其次,请考虑使用DropDownListFor
辅助方法而不是DropDownList
最后,您必须先设置新的Game
对象实例,然后再设置它的ID:
var img = new images
{
Game = new game { Id = model.Game.Id }
};