Опитвам се да използвам 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 и не съм сигурен как да кодирам, така че моите selectedvalues ще бъдат използвани, за да съдържат избрания стойности в моя пост.
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 е деклариран като низ в моя Viewmodel:
[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();
Благодаря предварително!