Próbuję zapełnić DropDownList i uzyskać wybraną wartość, kiedy przesłać formularz:Uzyskaj wybraną wartość DropDownList. Asp.NET MVC
Oto mój model:
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; }
}
Moi Kontrolery:
[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();
}
moja 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>
}
Kiedy klikam, pa rameter "book" w akcji jest zawsze pusty. Co robię źle?
Działa! Wielkie dzięki :) –
Mam inne pytanie na ten temat. W rzeczywistości wybrana wartość DropDownList zwraca wartość 'ToString()' metody 'Book'. Muszę więc umieścić Ids w mojej liście DropDownList, ale chciałbym, aby na liście była wyświetlana nazwa i wybrana wartość, która ma być identyfikatorem. Czy jest jakiś sposób na zrobienie tego? Na razie używam tego sposobu: metoda 'ToString()' zwraca "Id - Title" i używam 'SubString()', aby zachować tylko identyfikator. Ale chciałbym, aby DropDownList wyświetlał tylko tytuł bez identyfikatora. –
Klasa 'SelectList', którą przechodzisz do DropDown, to' IEnumerable ', gdzie' SelectListItem' ma 2 właściwości: 'Wartość' i' Tekst'. Możesz ustawić "Wartość" na "Id" swojej instancji Book i "Text" na dowolny format. –