Ich versuche, ein Dropdownlist zu füllen und den ausgewählten Wert zu erhalten, wenn ich das Formular abschicken:Ruft den ausgewählten Wert einer DropDownList ab. Asp.NET MVC
Hier ist mein Modell:
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; }
}
Meine Controller:
[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();
}
Meine Form:
@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>
}
Wenn ich auf die pa Rameter "Buch" in der Aktion ist immer null. Was mache ich falsch?
Es funktioniert! Vielen Dank :) –
Ich habe eine andere Frage dazu. Tatsächlich gibt der ausgewählte DropDownList-Wert den Wert der 'ToString()' -Methode von 'Book' zurück. Also muss ich die IDs in meine DropDownList legen, aber ich möchte, dass die Liste den Titel und den ausgewählten Wert als ID anzeigt. Gibt es eine Möglichkeit, das zu tun? Für jetzt verwende ich diesen Weg: die 'ToString()' Methode gibt "Id - Titel" zurück und ich benutze 'SubString()', um nur die Id zu behalten. Aber ich möchte die DropDownList nur den Titel ohne die ID anzeigen. –
Die Klasse 'SelectList', die Sie an DropDown übergeben, ist ein' IEnumerable ', wobei' SelectListItem' zwei Eigenschaften hat: 'Value' und' Text'. Sie könnten den 'Wert' auf die' Id' Ihrer Book-Instanz und den 'Text' auf das gewünschte Format setzen. –