За исключением орфографических ошибок, я полагаю, что причина этого заключается в следующем:
В вашем методе ListBoxFor вы используете model.Cname. Под этим я полагаю, что вы имеете в виду «выбрать cName для выбранных значений CoreValues». Однако (и я предполагаю, что я не вижу вашу модель), свойство Cname в CreateViewModel имеет тип string. Из-за этого вы будете иметь только одно значение за раз. Вам нужно свойство типа IEnumerable для хранения нескольких выборок.
Обновите вашу модель до следующего:
public class CreateViewModel
{
public IEnumerable<string> SelectedValues { get; set; }
public IEnumerable<CoreValue> CoreValues { get; set; }
}
SelectedValues будет использоваться для хранения выбранных значений в сообщении. Мы также можем добавить элементы к нему, чтобы указать, что должно быть автоматически выбрано при создании представления.
В вашем контроллере сделайте следующее:
public ActionResult Create()
{
CreateViewModel model = new CreateViewModel();
model.CoreValues = Arep.getallC();
return View(model);
}
Наконец, обновите представление:
@Html.ListBoxFor(m => m.SelectedValues, new MultiSelectList(Model.CoreValues, "CID", "Cname"))
Теперь, когда вы публикуете сообщения, вы должны видеть значения, выбранные пользователем.
РЕДАКТИРОВАТЬ: Я не совсем уверен, что некоторые из ваших методов делают, поэтому я предполагаю.
Метод POST для создания:
[HttpPost]
public ActionResult Create(CreateViewModel model)
{
if (ModelState.IsValid)
{
foreach(var CoreValueID in model.SelectedValues)
{
Question q = new Question();
var getallC = Arep.getbycid(CoreValueID);
q.CoreValue.Add(getallC);
q.QuestionText = model.QuestionText;
Arep.addquestion(q);
}
Arep.save();
return RedirectToAction("Index");
}
return View(model);
}