Передача идентификатора выбранной выпадающей опции в контроллер - PullRequest
0 голосов
/ 21 марта 2012

Я использую mvc3 nhibernate и создаю поисковое приложение ... Здесь я создаю выпадающий список, содержащий все имена хобби, и по щелчку кнопки поиска идентификатор выбранной опции должен перейти к методу post, который я написал в своем контроллере после кода

public ActionResult Details()
{

ViewBag.h=new SelectList(new Hobby_MasterService().GetHobbies(),"Hobby_Id");

return View();
}
[HttpPost]
public ActionResult Details(int Hobby_Id)
{
Hobby_Master hm = new Hobby_MasterService().GetHobby_Data(Hobby_Id);
return RedirectToAction("Show");
}

и, с точки зрения, я показываю только один раскрывающийся список как

<b>Select Hobby:</b>
@using (Html.BeginForm("Details", "Hobbies", FormMethod.Get))
{
 <div class="Editor-field">
  @Html.DropDownListFor(Model => Model.Hobby_Id, (IEnumerable<SelectListItem>)ViewBag.h)

</div>
<input type="submit" value="Search" />
}

Мой раскрывающийся список заполнен функцией, которая имеет нормальный оператор SQL ... и я могусоздать список .... но как я могу получить выбранный идентификатор хобби ... Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

, не связываясь с привязкой модели, вы можете просто добавить параметр FormCollection в ваш метод POST.Эта коллекция содержит все опубликованные значения формы.

[HttpPost]
public ActionResult Details(FormCollection collection)
{
  Hobby_Master hm = new Hobby_MasterService().GetHobby_Data(Hobby_Id);
  if (collection["Hobby_Id"] != null)
  {
   // collection["Hobby_Id"] contains the value selected in the dropdown box
  }
  return RedirectToAction("Show");
}
0 голосов
/ 21 марта 2012

возможно FormMethod.Post на вашей форме?

а ваша модель - это класс? Возможно, вы могли бы принять это в своем посте, тогда вы найдете его идентификатор.

...