Связывание свойств в AspNetCore - PullRequest
0 голосов
/ 08 декабря 2018

Я использую:

return RedirectToAction("GetSchedule", new { requirements = preCheckParams.Requirements, weightValues = preCheckParams.WeightValues}); 

в моем приложении aspnetcore.Затем я хочу повторно использовать значения, которые я передаю анонимному объекту, в другом действии:

public IActionResult GetSchedule(List<string> requirements, Dictionary<string, int> weightValues)

Как ни странно, первое значение привязывается к действию List в GetSchedule, но второй объект, который является словарем,пустой.Существуют ли какие-либо особые правила в отношении словарей в таких случаях?

1 Ответ

0 голосов
/ 08 декабря 2018

Нельзя передавать классы в параметре routeValues ​​объекта RedirectToAction.

Возвращаемое значение метода RedirectToAction - HTTP 302 (Status302Found), который создает запрос GET для указанного действия.Это означает, что все ваши параметры будут помещены в URL в виде строки запроса.

Список / Массив строк requirements может быть передан в URL, поскольку он связывается с ?requirements=value1&requirements=value2&.. и т. Д. В строке запроса, но ничего более сложного, чем это, не может быть связано, только примитивные значения.

У меня есть несколько вариантов, которые мне приходят в голову:

  1. Сериализация объекта в JSON и передача его в виде строки.Это приведет к уродливому и запутанному URL-адресу, но это наименее болезненный способ.
  2. Используйте временное хранилище , если вам не требуется механизм без сохранения состояния.Сохраните перед действием и извлекайте словарь при его вводе.
  3. Если вы можете извлечь значения веса из бэкэнда, вы можете передать ему некоторый идентификатор для запроса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...