我正在使用 asp.net mvc 4 (vb),我被困在最后一部分以真正完成我的搜索功能。ValidateInput(False) 参数适用于每个调用,除非我通过 javascript 使用调用。我得到的错误如下:从客户端(<)检测到潜在危险的 Request.Path 值。当我尝试搜索类似 html 的内容时,我得到了这个。
我将列出我正在使用的代码:
MVC 视图:
<input type="text" id="searchtextMVC" name="query" onkeydown="EnterKeyDownForWhoIsWho(event);" data-url="@Url.Content("~/Controller/")"/>
javascript:
window.location.href = $('#searchtextMVC').attr('data-url') + 'Index/' + document.getElementById('searchtextMVC').value;
这两个修复了它,所以我得到了带参数的正确 url。
我的动作是这样开始的:
<ValidateInput(False)> _
Public Function Index() As ActionResult
Code stuff, eventually using CStr(RouteData.Values("fullName"))
现在的问题是 ValidateInput 对每个调用都有效,除了通过 javascript 调用的调用。我还在 web.config 中添加了 requestValidationMode="2.0",但这并没有帮助。我需要为我的函数提供参数 fullName 才能工作。
我花了太多时间在互联网上搜索没有答案,所以我希望我们可以一起解决这个问题。
编辑:我忘了提到我还在 web.config 中尝试了 requestPathInvalidCharacters="" ,这使得我总是遇到非法字符错误。
编辑2:
我在 javascript 中尝试了 url-encoding,但没有帮助。这是我尝试过的:
searchValue = $('#searchtextMVC').attr('data-url') + 'Index/' + encodeURIComponent(document.getElementById('searchtextMVC').value);