我需要将此文件路径通过路由传递给我的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
我的操作方法只需要使用该路径获取对引擎下文件的引用。
答案 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