Sto cercando di popolare una DropDownList e per ottenere il valore selezionato quando inviare il modulo:Ottieni il valore selezionato di DropDownList. Asp.NET MVC
Ecco il mio modello:
public class Book
{
public Book()
{
this.Clients = new List<Client>();
}
public int Id { get; set; }
public string JId { get; set; }
public string Name { get; set; }
public string CompanyId { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<Client> Clients { get; set; }
}
miei Controllers:
[Authorize]
public ActionResult Action()
{
var books = GetBooks();
ViewBag.Books = new SelectList(books);
return View();
}
[Authorize]
[HttpPost]
public ActionResult Action(Book book)
{
if (ValidateFields()
{
var data = GetDatasAboutBookSelected(book);
ViewBag.Data = data;
return View();
}
return View();
}
mio Forma:
@using (Html.BeginForm("Journaux","Company"))
{
<table>
<tr>
<td>
@Html.DropDownList("book", (SelectList)ViewBag.Books)
</td>
</tr>
<tr>
<td>
<input type="submit" value="Search">
</td>
</tr>
</table>
}
Quando scatto, la pa il "libro" del rameter nell'azione è sempre nullo. Cosa sto sbagliando?
Funziona! Grazie mille :) –
Ho un'altra domanda al riguardo. Infatti, il valore selezionato DropDownList restituisce il valore del metodo 'ToString()' di 'Book'. Quindi devo inserire gli ID nel mio DropDownList, ma vorrei che l'elenco visualizzasse il titolo e il valore selezionato come ID. C'è un modo per farlo? Per ora, io uso in questo modo: il metodo 'ToString()' restituisce "Id - Title" e io uso 'SubString()' per mantenere solo l'Id. Ma mi piacerebbe che DropDownList mostrasse solo il Titolo senza l'Id. –
La classe 'SelectList' che si sta passando a DropDown è un' IEnumerable 'dove' SelectListItem' ha 2 proprietà: 'Value' e' Text'. È possibile impostare il valore su "Id" dell'istanza di Book e su "Text" in qualsiasi formato si desideri. –