избиране и добавяне на множество стойности с помощта на IEnumerable в MVC

Опитвам се да използвам 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();

Благодаря предварително!


person Obsivus    schedule 13.03.2012    source източник


Отговори (1)


Можете да накарате действието на POST контролера да вземе модела на изглед като аргумент. Тогава свойството SelectedValues ще съдържа списък със стойности, избрани от потребителя:

[HttpPost]
public ActionResult Index(CreateViewModel model)
{
    model.SelectedValues will cnotain the selected values from the user here
    ...
}
person Darin Dimitrov    schedule 13.03.2012
comment
О, да, имам своя ViewModel като параметър в моето POST действие. Но това е моделът. SelectedValues ​​ще съдържа избраните стойности от потребителя тук, имам проблеми с кодирането, тъй като е Ienumerable :/ - person Obsivus; 13.03.2012
comment
@RammtinAvar, какви проблеми имаш? Какво се опитваш да постигнеш? Мислех, че питате как да извлечете избраните стойности обратно в действието POST. - person Darin Dimitrov; 13.03.2012
comment
Това, което се опитвам да постигна, е след като потребителят е избрал множество стойности от моето списъчно поле, искам да добавя тези стойности в моята база данни, преди те да могат да добавят само една стойност, но сега би трябвало да е възможно добавянето на множество, като декларирах множество избрани стойности в моя изгледмодел, който се попълва в действието ми GET от всичките ми статични основни стойности в моята база данни. Не знам как да постигна това в моето POST действие. - person Obsivus; 13.03.2012
comment
@RammtinAvar, тогава въпросът ти няма нищо общо с ASP.NET MVC. Това е повече за проектиране на база данни и запитване до SQL база данни. Бих ви препоръчал да започнете нов въпрос, в който да обясните схемите на вашата база данни, технологията на базата данни, която използвате, за да направите заявка в базата данни, да обясните дали използвате някаква ORM и след това да попитате как да актуализирате тази база данни, дадена списък от низове. - person Darin Dimitrov; 13.03.2012
comment
Мисля, че не разбирате проблема ми. Ще редактирам въпроса си в долната част. :) - person Obsivus; 13.03.2012
comment
Постигнах го! Просто трябваше да направя foreach цикъл, който преобразува всеки елемент в int и след това да използвам моя метод, за да получа всички идентификатори и след това просто да ги добавя :) - person Obsivus; 13.03.2012