Передать & как часть параметра маршрута - PullRequest
1 голос
/ 09 июля 2010

К сожалению, мне нужно принять параметр маршрута с символом & в нем. У меня есть это определение маршрута. Параметр id иногда имеет & в нем, как этот X & Y001.

        routes.MapRoute(
            "AffiliateEdit",
            "Admin/EditAffiliate/{*id}",
            new { controller = "UserAdministration", action = "EditAffiliate", id = ""}
        );

Я пытался обойти эту проблему следующими способами, однако ни один из них не помог. Все это приводит к ошибке HTTP 400 Bad Request в браузере.

<a href="/Admin/EditAffiliate/<%= a.CustomerID.Replace("&", "%26") %>">Edit</a>

Это дает мне <a href="/Admin/EditAffiliate/X%26Y001">Edit</a>

<%= Html.RouteLink("Edit", "AffiliateEdit", new { id = a.CustomerID }) %>

Это дает мне <a href="/Admin/EditAffiliate/X&amp;Y001">Edit</a>

<%= Html.RouteLink("Edit", "AffiliateEdit", new { id = Url.Encode(a.CustomerID) }) %>

Это дает мне <a href="/Admin/EditAffiliate/X%2526Y001">Edit</a>

1 Ответ

1 голос
/ 09 июля 2010

единственное, что я могу придумать (что является «грязным» решением), - это кодировать & себя. например что-то вроде ## 26 ##. убедитесь, что алгоритм декодирования декодирует только идентификаторы &, а не какой-то идентификатор, который, например, содержит ## 26 ##.

Лучшее решение в зависимости от размера базы данных - изменить ошибочные идентификаторы в базе данных.

...