Ваш пример кода устанавливает значения обратно в коллекцию RouteData. Вы пытаетесь передать параметры своему представлению, используя коллекцию RouteData? Это не то, для чего он существует, вы можете вместо этого использовать ViewBag.
Или создайте POCO, который содержит все ваши свойства, и пусть связыватель данных сделает всю работу (поэтому используйте @model YourType
в вашем представлении и передайте один аргумент вашему представлению. Связыватель модели по умолчанию отобразит значения отдельных аргументов для вас).
Что касается коллекций входных значений, есть веская причина, по которой значение не может быть найдено последовательно в упомянутых вами коллекциях.
Возможно, уловка в том, чтобы уточнить, что происходит до того, как ваше действие будет вызвано. Аргументы вашего метода действия могут быть получены из нескольких источников. Например, это может быть от:
- Путь URL
- Строка запроса URL (например: в GET, параметры после знака вопроса?)
- отправленные данные формы
- Явные аргументы из другого действия
В приведенном выше примере кода коллекция RouteData будет содержать значение «x», только если у вашего маршрута есть совпадающее имя параметра.
Например: "{controller}/{action}/{x}
". (это пользовательский маршрут, вытягивающий «х» из пути)
Если этого не сделать, значения будут разрешены с использованием связывателя модели по умолчанию и будут извлечены либо из параметров строки запроса, либо из данных POST, в зависимости от обстоятельств.
Значение маршрута будет иметь приоритет. Поэтому, если был применен указанный выше пользовательский маршрут, следующий URL:
http://www.example.com/Something/Index/1?x=2
вызовет ваше действие с x = 1 . Тогда 1 будет найдено в RouteData как извлеченное из URL-пути, а x = 2, найденное в Request.QueryString, будет проигнорировано.
Если вас интересует, как х получил свое значение, то вы должны принять во внимание все вышеперечисленное, чтобы вы знали, где искать. Существует также вопрос о том, какой маршрут применяется к запросу, но это совсем другая тема.
Все входные данные попадали на провод в виде текста ... это связыватель модели проверял подпись вашего действия и преобразовывал в указанные вами типы (везде, где это возможно).
Итак, я не думаю, что то, о чем вы просите, существует даже концептуально в этой обстановке.