1

Я пытаюсь использовать IEnumerable, поэтому он содержит несколько вариантов выбора, поэтому пользователь может выбрать более одного значения в моем списке.выбор и добавление нескольких значений с использованием IEnumerable в MVC

Это как мой 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 работает отлично beacuse model.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(); 
     } 

Эта версия моего сообщение действия не работает beacuse Model.Selectedvalues объявлен как Ienumerable string в моей 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(); 

Заранее благодарен!

ответ

0

Возможно, ваше действие контроллера POST получило модель представления в качестве аргумента. Тогда SelectedValues свойство будет содержать список значений, которые выбрал пользователь:

[HttpPost] 
public ActionResult Index(CreateViewModel model) 
{ 
    model.SelectedValues will cnotain the selected values from the user here 
    ... 
} 
+0

Ах да у меня есть мои ViewModel в качестве параметра в моем действии POST. Но его «model.SelectedValues ​​будет игнорировать выбранные значения от пользователя здесь». У меня проблемы с кодом после его Ienumerable:/ – Obsivus

+0

@RammtinAvar, какие у вас проблемы? Чего вы пытаетесь достичь? Я думал, вы спрашиваете, как вернуть выбранные значения в действие POST. –

+0

То, что я пытаюсь достичь, - это то, что пользователь выбрал несколько значений из моего списка. Я хочу добавить эти значения в свою базу данных, прежде чем они смогут просто добавить одно значение, но теперь должно быть возможно добавить несколько, я объявил Ienumerable selectedvalues в моей модели viewmodel, которая заполняется моим действием GET всеми моими статическими ключевыми значениями в моей базе данных. Я не знаю, как это сделать в моем действии POST. – Obsivus

 Смежные вопросы

  • Нет связанных вопросов^_^