Шаблон для итерации параметров запроса - PullRequest
3 голосов
/ 22 декабря 2010

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

Есть ли лучший способ перебрать все значения nameValueCollection AllKeys?

В настоящее время я перебираю параметры запроса и устанавливаю соответствующие значения.

 foreach (var key in Request.Params.AllKeys)
 { 
     if (key.Equals("CustomerId"))
        queryObject.CustomerId = Request.Params[key];
     else if (key.Equals("OrderId"))
       queryObject.OrderId= Request.Params[key];
     //and so on
 }

Я вижу значительныйколичество повторений в этом коде.Есть ли лучший способ справиться с этим?

Ответы [ 4 ]

6 голосов
/ 22 декабря 2010

Поскольку NameValueCollection не предоставляет Метод поиска и, просто уточнив свой код, вы можете сделать следующее:

 foreach (var key in Request.Params.AllKeys)
 { 
      queryObject.CustomerId = key.Equals("CustomerId") ? Request.Params[key] : queryObject.CustomerId;
      queryObject.OrderId = key.Equals("OrderId") ? Request.Params[key] : queryObject.OrderId;
     //and so on ...
 }
6 голосов
/ 22 декабря 2010

Может как то так?

queryObject.CustomerId = Request.Params["CustomerId"];
queryObject.OrderId = Request.Params["OrderId"];
2 голосов
/ 22 декабря 2010

Не могли бы вы использовать отражение для получения свойств объекта из вашего запроса, а затем прочитать их, чтобы получить соответствующие элементы из request.params?-имя /

http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx

0 голосов
/ 22 декабря 2010

Похоже, что C # имеет эквивалент Java Map:

Эквивалент Java Map в C #

Если больше ничего не работает, я бы порекомендовал построить Dictionary пар ключ-значение, а затем считывать значения из Dictionary в объект класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...