在MVC中,我尝试使用URL路由来获取给定某个输入的操作结果。
在我的观点中考虑以下内容:
<%=Html.ActionLink("View", "Test", new with {.id = Url.Encode(dir\file}) %>
我的控制器然后使用HttpUtility.UrlDecode(id)
来获取原始内容。控制器本身正在使用File()
来检索指定目录\文件位置的文件。但是,弹出一条错误消息告诉我
A potentially dangerous Request.Path value was detected from the client (%).
网址显示为
http://home/dir%255cfile.txt
我用谷歌搜索了网址编码,\
被编码为%5c
。 %25来自哪里?它是%的编码,但这意味着Encode正在进行两次。为什么会这样,是应该发生的呢?
答案 0 :(得分:1)
Html.ActionLink
会为您处理URL编码。如果你没有对params进行编码,则无需再次对其进行解码,问题就解决了。