Часть запроса URL-адреса синтаксического анализа ASP.NET MVC

Я хочу, чтобы ?a=5&b=8 часть URL-адреса превратилась в словарь { a:5, b:8 }.

Есть ли такой метод в .net или я сам?

Мне нужно проанализировать часть запроса, чтобы я мог реализовать собственное декодирование URL. Проблема в том, что Firefox использует разную кодировку (UTF8 или ISO-8859-1) в зависимости от используемого алфавита.

Пример:

Firefox кодирует следующим образом:

-                                          v   v
http://localhost:8041/Reforge.aspx?name=ArcânisГ 
Firefox turns into  
http://localhost:8041/Reforge.aspx?name=Arc%C3%A2nis%D0%93`  

Обратите внимание, что кодировка UTF8 используется для обоих символов, отличных от ASCII.

-                                          v
http://localhost:8041/Reforge.aspx?name=Arcâ
Firefox turns into
http://localhost:8041/Reforge.aspx?name=Arc%E2

Обратите внимание, что кодировка ISO-8859-1 (Latin-1) используется для символов, отличных от ASCII.

Вот связанный с этим вопрос: ASP.NET MVC не поддерживает смешанную кодировку URL (UTF-8/Latin-1)


person THX-1138    schedule 12.11.2010    source источник


Ответы (2)


Request.QueryString — это коллекция NameValueCollection, похожая на словарь.

Он может содержать несколько значений для одного и того же ключа.

Если "?a=5&b=8" не получено из строки запроса, вы можете использовать метод HttpUtility.ParseQueryString для получения NameValueCollection.

Если вам нужен настоящий словарь:

var d = new Dictionary<String,Object>();
this.Request.QueryString.CopyTo(d);
person Marco Staffoli    schedule 13.11.2010
comment
Проблема с Request.QueryString заключается в том, что он также не экранирует значения, и мне нужно обработать именно это. Подробности: firefox может использовать utf-8 ИЛИ latin-1 для экранирования символов, но ASP.Net MVC постоянно использует то или иное. - person THX-1138; 15.11.2010

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

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

Интуитивный словарь модели для ASPnet MVC

person nerraga    schedule 14.11.2010