MVC2 ASP.Net URL会自动解码吗?

所以我在MVC2中调用Controller就像这样,我访问了经典的querystrings就好了。 请注意第二个参数thing2已经URLEncoded并再次检索URLEncoded查询字符串和URLDecoding是没有问题的。 我的例子看起来像这样……

http://mydomain.com/controller?thing1=1544&thing2=somethingURLEncoded

现在我尝试转向处理参数的MVC2 ASP.Net方式,并使自己成为一个很好的自定义MapRoute。 我测试它看到它适用于一个简单的测试…

http://mydomain.com/controller/Index/1544/999

我成功调试VS2010步骤在我的控制器内部的Index方法!

然后,我决定采取下一步,将URL上的最后一个参数更改为URLEncoded值…

http://mydomain.com/controller/Index/1544/somethingURLEncoded

我在浏览器中执行此操作后看到的问题是,在我进入控制器内部的Index方法之前,它几乎看起来像MVC2 ASP.Net是自动URL解码的。

是什么赋予了? 我以为我可以先进入我的控制器,然后再进行自己的URLDecode。 因为原始数据是AES加密的并且在其中有正斜杠..,过早地使用我的参数URLDecoding不是我可以计划的副作用。

请帮忙。

是的,MVC自动url解码动作参数。 但您仍然可以通过查询字符串访问url编码版本。

所以我做的是在我的Action Parameter中使用Base64编码而不是URLEncode我的AES加密数据。

由于ASP.NET MVC基于ASP.NET引擎(并不奇怪),正确编码的URL会被引擎自动正确地进行URL解码,因此您无需提问。 只是:

public ActionResult Index(string q) { // TODO : Use the q parameter here as is without ever caring of URL decoding it. // It's the caller of this action responsibility to properly URL encode his data return View(); }