Кодировка амперсанд в URL

У меня есть этот код в моем коде...

protected void Page_Init(object sender, EventArgs e)
{
  RegisterCssFile("http://example.com/default.aspx?type=fm&theme=fm");
}

private void RegisterCssFile(string path)
{
  var css = new HtmlGenericControl("link");
  css.Attributes.Add("href", path);
  css.Attributes.Add("type", "text/css");
  css.Attributes.Add("rel", "stylesheet");
  Page.Header.Controls.Add(css);
}

Это делает

<link href="http://example.com/default.aspx?type=fm&amp;theme=fm" type="text/css" rel="stylesheet"></link>

... что, как видите, неверно.

Почему кодируется амперсанд (&) и как это исправить?


person Bridget Midget    schedule 25.10.2011    source источник


Ответы (1)


На самом деле, это правильно. Почему вы думаете, что это неправильно? Он должен быть отправлен браузером как раз & после отмены экранирования HTML. У вас что-то не работает?

person e.dan    schedule 25.10.2011
comment
Кажется, он уничтожает строку запроса. Когда я просматриваю сгенерированный URL-адрес, я получаю сообщение об ошибке. Я не получаю ошибку, когда амперсанд не закодирован. - person Bridget Midget; 25.10.2011
comment
@Bridget: Если вы поместите этот URL-адрес прямо в адресную строку браузера, то да, это не сработает. Но когда ссылка найдена в HTML, браузер должен правильно отменить экранирование и отправить только &. Почему бы вам не попробовать поместить URL-адрес в ссылку <a href и нажать на нее. Работает ли он тогда, даже когда экранирован, как показано? - person e.dan; 25.10.2011