2012-03-29 146 views
0

我需要通过以上途径通过这个文件路径,以我的actionmethod:传递一个文件路径在URL

<p><a href="/Cars/@Model.CarId/@car.ContainerPath/@Model.UserId/Url">@car.Name</a></p> 

因此,例如@ car.ContainerPath是"34_Creating%20Cars%20Forms/Exercise%20Cars/Audi%202010%20Parts%20Reference.pdf"

我需要以某种方式逃离这个字符串我认为?我不希望通过网址发送这个,但有一个超链接,我没有看到一个方法不能。

UPDATE:

有关更多的信息,下面是它要的actionmethod:

public string GetFileZipDownloadUrl(CarViewModel model, string fileContainerPath) 
    { 
     string downloadUrl = string.Empty; 
     downloadUrl = GetFileZipDownloadUrl(model.CarId,fileContainerPath, model.UserId); 

     return downloadUrl; 
    } 

所以我在发送该fileContainerPath路径类似这样的网址为@ car.ContainerPath PARAM :

"55_Creating Cars Forms/Exercise Cars/Audi Parts Reference.pdf" 

所以要求真实面前的路径URL看起来像这样在超链接时形成:

http://Cars/55/55_Creating Cars Forms/Exercise Cars/Audi Parts Reference.pdf/20/Url 

我的操作方法只需要使用该路径去获取引擎下的文件引用。

+1

你是什么意思逃脱?你想摆脱URL中的%20个空格? – 2012-03-29 20:38:33

+0

是真的......它已经逃脱了。我指的是在文件路径中的斜杠,但是是的,他们是 – PositiveGuy 2012-03-29 20:39:56

回答

1

如果你只想摆脱20%在URL中使用编码/解码就像@ Xander的回答。但是,如果你的任何数据都是非常动态的,并且可能有奇怪的字符,你应该考虑添加一个Safe()和Unsafe()方法,它们会去掉URL中的所有“危险”字符,然后将其恢复为原始值。

+0

谢谢你现在这个解释帮助我更好。 – PositiveGuy 2012-03-29 20:53:19

+0

我正在考虑

@file.Name

PositiveGuy 2012-03-29 20:59:44

+0

然后,如果您的任何数据像@ car.ContainerPath有奇怪的字符,您应该制作一个Safe()方法,并将其用作@ car.ContainerPath.Safe(),其中safe将替换所有字符你不想用例如破折号。 – 2012-03-29 21:01:29

0

原始地址:

HttpUtility.UrlEncode(rawurl); 

解码编码的网址:

HttpUtility.UrlDecode(encodedurl); 

http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx

http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode.aspx

+0

不知道为什么在这里 – PositiveGuy 2012-03-29 20:41:46

+0

是啊我知道那些...... btw msdn很烂,没有显示任何fing的例子..有什么意义。 – PositiveGuy 2012-03-29 20:51:03

+0

更像呃这有助于http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx – PositiveGuy 2012-03-29 20:52:47