MVC3从我的参数中剥离查询字符串

时间:2011-08-05 20:42:28

标签: asp.net asp.net-mvc asp.net-mvc-3

我有一个MVC3 Action,它接受一个可能包含查询字符串的参数(URL)。我的动作签名如下:

GetUrl(string url)

我希望能够发送它的网址,除非网址中有查询字符串,否则它每次都有效。例如,如果我导航到:

MyController/GetUrl/www.google.com

url参数与“www.google.com” - 完美相对应。但是,如果我发送     myController的/使用getURL / www.google.com /?ID = 3 url参数与“www.google.com/”相同如何让MVC3在该参数中为我提供整个网址? - 包括查询字符串?

2 个答案:

答案 0 :(得分:1)

那是因为系统将id = 3视为自己的查询字符串。在视图中构造链接时,需要使用@ Url.Encode将原始url字符串转换为编码字符串,以接受为控制器的参数。

答案 1 :(得分:1)

简单到URL.Inncode在页面上传入的URL,但你正在打开一些可能的安全问题。

我建议您对网址进行加密,然后对其进行编码,然后将其作为您的值传递,保护您不会让人们将任何内容传递到您的应用中。