Я думаю, вы также можете использовать инфраструктуру mvc для большей части своего кода. Поправьте меня, если я ошибаюсь, потому что я сделаю несколько предположений о ваших занятиях, потому что я не могу вычесть это из вашего поста.
Мои предположения:
- Request.Form ["action"] - это поле выбора с одним значением
- Request.Form ["value"] - это поле выбора с несколькими значениями
- действие - это действие, которое вы хотите предпринять для всех сообщений
- message - список значений, которые должны идти с действием
Я бы попытался использовать функциональность фреймворка, где это возможно
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveMemberAction(SelectList selectedMessages, MemberMessageAction actionType){
//Refactors mentioned by others
}
Если затем вы дадите своим входным данным в своем HTML правильное имя (в моем примере это будет выбранные сообщения и actionType), первые несколько правил станут не обязательными.
Если модель ModelBinder по умолчанию не может вам помочь, вы можете подумать о том, чтобы поместить логику синтаксического анализа в пользовательский моделиндер. Вы можете искать сообщения об этом в SO.
В качестве примечания: вы, возможно, захотите пересмотреть названия переменных. «action» может путать с действием MVC (как в ActionResult), а MemberMessageSaveAction может выглядеть так, как будто это значение перечисления MemberMessageAction. Просто мысль.