Я пытаюсь использовать IEnumerable, чтобы он содержал несколько вариантов выбора, чтобы пользователь мог выбрать более одного значения в моем списке.
Вот как выглядит моя ViewModel:
public class CreateViewModel
{
public IEnumerable<string> SelectedValues { get; set; }
public IEnumerable<CoreValue> CoreValues { get; set; }
}
Это мой GET в моем контроллере:
public ActionResult Create()
{
CreateViewModel model = new CreateViewModel();
model.CoreValues = AdminRepository.GetAllCoreValues();
return View(model);
}
Вот как выглядит мой взгляд:
@Html.ListBoxFor(m => m.SelectedValues, new MultiSelectList(Model.CoreValues, "Id", "Name"))
Как мне закодировать свое действие POST, чтобы SelectedValues использовался для хранения выбранных значений в сообщении?
До Ienumerable у меня была строка, объявленная для CoreValueName в моей ViewModel, и я сделал что-то подобное в моем действии POST, которое отлично работало, но теперь я изменил его на Ienumerable, и я не уверен, как кодировать, поэтому мои выбранные значения будут использоваться для хранения выбранных ценности в моем посте.
Question question = new Question();
var CoreValueID = int.parse(model.CoreValueName);
var GetAllCoreValuesID = AdminRep.GetByCoreValueID(CoreValueID);
question.CoreValue.Add(GetAllCoreValuesID);
AdminRepository.AddQuestion(question);
AdminRepository.save();
Эта версия моего действия POST работает отлично, потому что модель SubjectType объявлена как строка в моей модели просмотра:
[HttpPost]
public ActionResult Create(AdminCreateViewModel model)
{
Question question = new Question();
var SubjectTypeID = int.Parse(model.SubjecTypeName);
var GetAllSubjecTypesID = AdminRep.GetBySubjectTypeID(SubjectTypeID);
question.SubjectType.Add(GetAllSubjecTypesID);
AdminRep.AddQuestion(question);
AdminRep.save();
}
Эта версия моего действия Post не работает, потому что Model.Selectedvalues
объявлен как Ienumerable строка в моей ViewModel. Я пытался int.parse мой model.SelectedValues
, но это не работает с Ienumerable. А метод GetByCoreValueID
принимает в качестве аргумента int, поэтому я понятия не имею, как это сделать. Мне нужен foreach?
[HttpPost]
public ActionResult Create(AdminCreateViewModel model)
{
Question question = new Question();
var CoreValueID = model.SelectedValues;
var GetAllCoreValuesID = AdminRep.GetByCoreValueID(CoreValueID); //
question.CoreValue.Add(GetAllCoreValuesID);
AdminRep.AddQuestion(question);
AdminRep.save();
Заранее спасибо!