Я пытаюсь использовать SelectListItem
для проекта MVC, drop down заполняется так, как я ожидаю. Но когда я передаю выбранное значение функции, которая принимает строку, используя этот model.CodeDropDown.ToString()
, я получаю System.Collections.Generic.List 1[System.Web.Mvc.SelectListItem]
, который не является строкой.Получить выбранное значение из SelectItemList
Как получить выбранное значение в виде строки?
У меня есть ViewModel
класс, который выглядит следующим образом:
public class HomeViewModel
{
[Required]
[DisplayName("Code")]
public IEnumerable<SelectListItem> CodeDropDown { get; set; }
public string SelectedValue { get; set; }
}
Я пополняя ниспадающее меню с помощью этого Controller
public ActionResult Index()
{
var model = new HomeViewModel();
using (var dbCon = new SomeDBContext())
{
model.CodeDropDown = dbCon.CodeID.ToList().Select(x => new SelectListItem
{
Value = x.Name.ToString(), Text = x.CodeDropDown.ToString()
}).DistinctBy(c => c.Value);
}
return View(model);
}
}
Я пытаюсь использовать значение из SelectListItem
, как это ,
public ActionResult Index(HomeViewModel model)
{
var results = mainDbContext.GetSomeResult(model.CodeDropDown.ToString(), model.Prop2, model.Prop3);
return View(results);
}
Вид выглядит следующим образом:
@Html.DropDownListFor(model => model.SelectedValue, Model.CodeDropDown, "--")
ли, что значение 'SelectedThingID' автоматически передается? – hello
Да, эта строка позаботится об этом для вас: @ Html.DropDownListFor (x => x.SelectedThingId, Model.CodeDropDown). Это говорит движку просмотра MVC (Razor и т. Д.), Чтобы создать раскрывающийся список и заполнить его данными из Model.CodeDropDown и всякий раз, когда выбор сделан, записать его в SelectedThingId. Для этого Razor напишет все необходимые html и javascript. – CodingYoshi
По-прежнему не получается желаемого результата. Посмотрите на обновление. – hello