2010-09-28 4 views
0

J'ai une propriété d'une classe de modèle qui contient une URL relative à un fichier. Comment puis-je, dans la vue, le transformer en un lien hypertexte pour télécharger le fichier lui-même? URL du client relatif à l'URL http

~/_docs/folder/folder/document.pdf 

grâce

Répondre

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

Ou pour le rendre plus élégant et éviter le code spaghetti, vous pouvez écrire un aide HTML personnalisé:

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()); 
    } 
} 

puis:

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

@Lorenzo, vous êtes les bienvenus :-) –