Я понимаю, почему это происходит, но мне нужен обходной путь. Я рассмотрел некоторые другие вопросы по StackOverflow, но ни один из них не помог. Я не хочу отключать проверку ввода на всем веб-сайте, потому что это определенно опасно. У меня есть только одно (по крайней мере, пока) место, где мне нужно отключить проверку ввода.
Я украсил метод действия атрибутом [ValidateInput (false)] и кодирую строки с помощью Html.Encode. Но все равно получаю ту же ошибку. Вот мое мнение:
<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>
Как видите, пользовательский ввод отсутствует. Но в некоторых названиях категорий есть "опасные" символы ... Какие-нибудь решения?