我多次阅读 MVC 专家说如果我要使用 SelectList,最好IEnumerable<SelectList>
在我的模型中定义一个。
例如,在这个问题中。
考虑这个简单的例子:
public class Car()
{
public string MyBrand { get; set; }
public IEnumerable<SelectListItem> CarBrands { get; set; } // Sorry, mistyped, it shoudl be SelectListItem rather than CarBrand
}
在 Controller 中,人们会这样做:
public ActionResult Index()
{
var c = new Car
{
CarBrands = new List<CarBrand>
{
// And here goes all the options..
}
}
return View(c);
}
但是,从Pro ASP.NET MVC中,我学到了这种创建新实例的方法。
public ActionResult Create() // Get
{
return View()
}
[HttpPost]
public ActionResult Create(Car c)
{
if(ModelState.IsValid) // Then add it to database
}
我的问题是:我应该如何将视图传递SelectList
给视图?由于在 Get 方法中不存在模型,因此我似乎无法做到这一点。
我当然可以使用ViewBag
,但我被告知要避免使用ViewBag
,因为它会导致问题。我想知道我的选择是什么。