Se detectó un valor Request.Path potencialmente peligroso del cliente (&)

Entiendo por qué sucede esto, pero necesito una solución alternativa. Investigué algunas otras preguntas sobre StackOverflow pero ninguna de ellas fue útil. No quiero deshabilitar la validación de entrada en todo el sitio web porque eso es definitivamente peligroso. Solo tengo un lugar (al menos por ahora) donde necesito deshabilitar la validación de entrada.

Decoré el Método de Acción con el atributo [ValidateInput (false)], y estoy codificando las cadenas con Html.Encode. Pero aún así, me sale el mismo error. Aquí está mi punto de vista:

<div id="sharwe-categories">
    <ul class="menu menu-vertical menu-accordion">
        @foreach(var topLevel in Model)
        {
            var topLevelName = Html.Encode(topLevel.Name);
             <li class="topLevel">
                <h3>  
                    @Html.ActionLink(topLevel.Name, "Index", "Item", new { category = topLevelName }, new {@class = "main"} )
                    <a href="#" class="drop-down"></a>
                </h3>
                <ul>
                    @foreach (var childCategory in topLevel.Children)
                    {
                        var childcategoryName = Html.Encode(childCategory.Name);
                        <li>@Html.ActionLink(childCategory.Name, "Index", "Item", new RouteValueDictionary { { "category", topLevelName }, { "subcategory", childcategoryName } }, null)</li>
                    }
                </ul>
            </li>
        }

    </ul>

</div>

Como puede ver, no hay entrada del usuario. Pero algunos de los nombres de categoría tienen algunos caracteres "peligrosos" en ellos ... ¿Alguna solución?

Respuestas a la pregunta(3)

Su respuesta a la pregunta