Передача шестнадцатеричного цвета на страницу ASP.NET с использованием параметра ULR - PullRequest
1 голос
/ 20 августа 2009

Я пытаюсь разрешить пользователю указать цвет фона для моего сайта asp.net. Поэтому я хочу передать цвет страницы в мой URL-адрес, например:

UserDetails.aspx?Color=#FFFFFF

Однако, как только я включаю символ #, я не могу получить правильное значение для параметра Color, используя:

color = System.Drawing.ColorTranslator.FromHtml(Request.Params["Color"]);

Пожалуйста, помогите

Ответы [ 5 ]

6 голосов
/ 20 августа 2009

Символ фунта (#) используется в URL-адресах, чтобы указать, где начинается идентификатор фрагмента (закладки / якоря в HTML). Возможно, вы захотите, чтобы URL закодировал его как% 23.

Или, как заметил Эндрю в комментарии, пользователь может передать параметр без знака фунта и добавить его позже.

4 голосов
/ 20 августа 2009
UserDetails.aspx?Color=FFFFFF

string colString = Request["Color"];
Color col = ColorTranslator.FromHtml(String.Format("#{0}", colString));
0 голосов
/ 20 августа 2009

Для дальнейшего использования, обратите внимание на метод HttpUtility.UrlEncode . Все параметры строки запроса должны быть закодированы URL перед передачей через URL. «Кодировка URL преобразует символы, которые не разрешены в URL, в эквиваленты символьной сущности». например.

string colour = HttpUtility.UrlEncode("#FFFFFF");
string url = "UserDetails.aspx?Color=" + colour;
0 голосов
/ 20 августа 2009

Если вы изменяете клиентскую строку запроса, я бы использовал метод JavaScript encodeURIComponent для кодирования всех ваших данных.

0 голосов
/ 20 августа 2009

или вы можете просто опустить хеш и написать так

color = System.Drawing.ColorTranslator.FromHtml ("#" + Request.Params ["Color"]);

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

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