Я пытаюсь заполнить DropDownList и получить выбранное значение, когда я отправить форму:Получить выбранное значение DropDownList. Asp.NET MVC
Вот моя модель:
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; }
}
Мои контроллеры:
[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();
}
Моя форма:
@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>
}
Когда я нажимаю, ПА rameter 'book' в Action всегда имеет значение null. Что я делаю неправильно?
Это работает! Спасибо большое :) –
У меня есть еще один вопрос об этом. Фактически, выбранное значение DropDownList возвращает значение 'ToString()' метода 'Book'. Итак, я должен поместить идентификаторы в свой DropDownList, но мне бы хотелось, чтобы в списке отображалось название и выбранное значение Id. Есть ли способ сделать это? В настоящее время я использую этот способ: метод 'ToString()' возвращает «Id - Title», и я использую 'SubString()', чтобы сохранить только Id. Но я бы хотел, чтобы DropDownList отображал только заголовок без Id. –
Класс 'SelectList', который вы передаете DropDown, представляет собой' IEnumerable ', где' SelectListItem' имеет 2 свойства: 'Value' и' Text'. Вы можете установить 'Value' в' Id' экземпляра вашей книги и 'Text' в любом формате, который вы хотите. –