Я много раз читал экспертов MVC, говоря, что если бы я использовал SelectList, лучше всего иметь IEnumerable<SelectList>
, определенный в моей модели.
Например, в этом question.
Рассмотрим простой пример:Как использовать SelectList в представлении без модели?
public class Car()
{
public string MyBrand { get; set; }
public IEnumerable<SelectListItem> CarBrands { get; set; } // Sorry, mistyped, it shoudl be SelectListItem rather than CarBrand
}
В контроллере, люди будут делать:
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
, так как это вызывает проблемы. Мне интересно, какие у меня варианты.
Если вы хотите передать данные с контроллера для просмотра, вы должны использовать либо mo del или ViewBag также могут использоваться ViewData. Без этого вы можете сделать статический вид. – Chandu