2010-09-28 61 views
0

我有一个模型类的属性,它包含一个文件的相对URL。相对客户端URL到http url

~/_docs/folder/folder/document.pdf 

我怎么能在视图中将其转换为超链接来下载文件本身?

感谢

回答

3
<a href="<%= Url.Content("~/_docs/folder/folder/document.pdf") %>"> 
    document.pdf 
</a> 

还是为了让其更加优雅和避免意大利面条代码,你可以写一个自定义的HTML帮助:

public static class HtmlExtensions 
{ 
    public static MvcHtmlString ContentLink(
     this HtmlHelper htmlHelper, 
     string linkText, 
     string contentPath, 
     object htmlAttributes 
    ) 
    { 
     var a = new TagBuilder("a"); 
     var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext, htmlHelper.RouteCollection); 
     a.MergeAttribute("href", urlHelper.Content(contentPath)); 
     a.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 
     a.SetInnerText(linkText); 
     return MvcHtmlString.Create(a.ToString()); 
    } 
} 

然后:

<%= Html.ContentLink(
    "download.pdf", 
    "~/_docs/folder/folder/document.pdf", 
    new { title = "Download download.pdf" } 
) %> 
+0

@Lorenzo,不用谢 :-) – 2010-09-28 20:46:26