【发布时间】:2019-01-14 23:00:08
【问题描述】:
我在尝试使用 DropDown 和 ListBox 列表创建对象时遇到此错误
System.NullReferenceException System.Web.Mvc.WebViewPage.Model.get 返回 null。
型号
public class Game
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public Publisher Publishers { get; set; }
public int PublisherID { get; set; }
public List<Category> Categories { get; set; }
public string ImageLink { get; set; }
public Game()
{
Categories = new List<Category>();
}
}
查看模型
public class GameViewModel
{
public int Id { get; set; }
public string Title { get; set; }
public object Category { get; set; }
public Publisher Publisher { get; set; }
public string ImageLink { get; set; }
public GameViewModel(int id, string title, List<Category> category, Publisher publisher, string imageLink)
{
this.ID = id;
this.Title = title;
this.Category = category;
this.Publisher = publisher;
this.ImageLink = imageLink;
}
创建视图模型
public class CreateGameViewModel{
public Game Game { get; private set; }
public List<SelectListItem> Categories { get; private set; }
public List<SelectListItem> Publishers { get; private set; }
public int[] SelectedCategory { get; set; }
public CreateGameViewModel()
{
this.Game = new Game();
}
public CreateGameViewModel(List<Models.Category> categories, List<Models.Publisher> publishers)
{
Categories = categories.Select(c => new SelectListItem() { Text = c.Name, Value = c.Id.ToString() }).ToList();
Publishers = publishers.Select(p => new SelectListItem() { Text = p.Name, Value = p.Id.ToString() }).ToList();
}
}
我的控制器
GET
public ActionResult Create()
{
var publishers = _db.Publishers.ToList();
var categories = _db.Categories.ToList();
var gameVM = new CreateGameViewModel(categories: categories, publishers: publishers);
return View(gameVM);
}
POST
[HttpPost]
public ActionResult Create(CreateGameViewModel game)
{
try
{
var categories = _db.Categories.Where(c => game.SelectedCategory.Contains(c.Id)).ToList();
game.Game.Categories = categories;
_db.Games.Add(game.Game);
_db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
我的观点(出现错误的地方)
@Html.DropDownListFor(m => m.Game.PublisherID, Model.Publishers)
@Html.ListBoxFor(m => m.SelectedCategory, Model.Categories)
我在这个创建视图中也有 id 和 PublisherID 的编辑器,这肯定是不正确的,但我不确定在哪里查明该问题,而另一个问题存在。
有人可以看看这段代码吗?
【问题讨论】:
标签: c# asp.net-mvc-4