Я разрабатываю веб-сайт ASP.NET MVC. На своем веб-сайте я переписываю URL-адреса в RouteConfig для улучшения SEO. Но у меня проблема с этим. Проблема связана со значением данных маршрута Encoding URL.
Я переписываю URL-адрес в RouteConfig следующим образом:
routes.MapRoute(
"",
"places/category/{categoryName}/{category}",
new { controller = "Item", action = "List", categoryName = "", category = 0 },
new string[] { "AyarDirectory.Web.Controllers" }
);
В моем HTML я создал якорную ссылку следующим образом:
<a href="@Url.Content("~/places/category/" + HttpUtility.UrlEncode(category.Name) + "/" + category.Id)">
Content
</a>
Когда я нажимаю на него, если имя не содержит символов, таких как «+», «%» после кодирования, оно всегда показывает 404. Это значение не содержит пробела и/(поэтому нет символов, таких как% и +) после кодирования , работает нормально.
Я ловлю значение в действии, например:
HttpUtility.UrlDecode(value)
Почему это не работает? Как я могу закодировать значение данных маршрута? Даже если значение содержит пробел, если я не кодирую значение, оно работает нормально. URL-адрес результата будет примерно таким с пробелом.
http://localhost:50489/places/guest house/4
Поэтому, если я использую без значения кодировки, если значение содержит «/», это будет ошибка. Почему это происходит и как я могу закодировать значение данных маршрута URL?