在URL上传递文件路径

时间:2012-03-29 20:36:54

标签: asp.net-mvc-3

我需要将此文件路径通过路由传递给我的actionmethod:

<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"

的字符串

我想以某种方式逃避这种想法?我宁愿不发送这个超过网址,但有一个超链接,我没有看到不这样做的方式。

更新:

有关其他信息,请参阅以下操作方法:

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

        return downloadUrl;
    }

所以我在那个@ car.ContainerPath param的url中发送了这样的fileContainerPath路径:

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

所以在请求之前的路由网址在该超链接中形成时如下所示:

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

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

2 个答案:

答案 0 :(得分:1)

如果您想在url中删除%20,请使用@ Xander的答案中的编码/解码。但是,如果您的任何数据非常动态并且可能有奇怪的字符,您应该考虑添加一个Safe()和Unsafe()方法,这些方法将删除url的所有“Dangerous”字符,然后将其转回原始值。

答案 1 :(得分: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