получить все элементы формы, которые заканчиваются на "Max" в качестве имени идентификатора - PullRequest
1 голос
/ 29 мая 2011

У меня в основном есть несколько полей ввода, которые имеют одни и те же последние 3 символа, "Макс". Все они отличаются от тегов "div", частью которых они являются. Блок кода, который у меня есть сейчас, выглядит ужасно:

                    if (Convert.ToInt32(Request.Form["MCQMax"]) > 0)
                {
                    TempData["Max"] = Convert.ToInt32(Request.Form["MCQMax"]);
                }
                else if (Convert.ToInt32(Request.Form["SAMax"]) > 0)
                {
                    TempData["Max"] = Convert.ToInt32(Request.Form["SAMax"]);
                }
                else if (Convert.ToInt32(Request.Form["PLMCQMax"]) > 0)
                {
                    TempData["Max"] = Convert.ToInt32(Request.Form["PLMCQMax"]);
                }
                else if (Convert.ToInt32(Request.Form["PLIFMax"]) > 0)
                {
                    TempData["Max"] = Convert.ToInt32(Request.Form["PLIFMax"]);
                }
                else if (Convert.ToInt32(Request.Form["PLDMax"]) > 0)
                {
                    TempData["Max"] = Convert.ToInt32(Request.Form["PLDMax"]);
                }

Как передать любые элементы формы, которые заканчиваются на Max, вместо того, чтобы иметь этот избыточный блок кода? Спасибо, ребята !!

Ответы [ 2 ]

1 голос
/ 29 мая 2011

Вы можете поместить все идентификаторы в массив, а затем просто просмотреть их:

(непроверенный полупсевдокод)

IDs={"MCAMax",...}

for(int i=0; i<IDs.length; i++){
   int theMax=Convert.ToInt32(Request.Form[IDs[i]]);
   if ( theMax > 0){
      TempData["Max"] = theMax;
      break;
   }
}
1 голос
/ 29 мая 2011

Примерно так:

var firstMaxFormKey = Request.Form.AllKeys
     .Where(arg => arg.EndsWith("Max"))
     .FirstOrDefault();
TempData["Max"] = Convert.ToInt32(Request.Form[firstMaxFormKey]);

[Изменить]

Извините, не обратил достаточно внимания. Я думаю, что это то, что вам нужно:

var max = Request.Form.AllKeys
        .Where(arg => arg.EndsWith("Max"))
        .Select(arg => Convert.ToInt32(Request.Form[arg]))
        .Where(arg => arg > 0)
        .FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...