выбор и добавление нескольких значений с помощью IEnumerable в MVC - PullRequest
1 голос
/ 13 марта 2012

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

Вот так выглядит моя модель представления:

    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 объявлен как строка в моей 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 объявлена ​​как бесчисленная строка в моей 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();

Заранее спасибо!

1 Ответ

0 голосов
/ 13 марта 2012

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

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