I\'m trying to populate a DropDownList and to get the selected value when I submit the form:
Here is my model :
public class Book
{
public Book
You can use DropDownListFor as below, It so simpler
@Html.DropDownListFor(m => m.Id, new SelectList(Model.Books,"Id","Name","1"))
(You need a strongly typed view for this -- View bag is not suitable for large lists)
public ActionResult Action(Book model)
{
if (ValidateFields()
{
var Id = model.Id;
...
I think this is simpler to use.
In HTML a dropdown box sends only simple scalar values. In your case that would be the id of the selected book:
@Html.DropDownList("selectedBookId", (SelectList)ViewBag.Books)
and then adapt your controller action so that you will retrieve the book from the id that gets passed to your controller action:
[Authorize]
[HttpPost]
public ActionResult Action(string selectedBookId)
{
if (ValidateFields()
{
Book book = FetchYourBookFromTheId(selectedBookId);
var data = GetDatasAboutBookSelected(book);
ViewBag.Data = data;
return View();
}
return View();
}