我有一个ASP.NET MVC 4站点,有点问题。
在我的Telerik菜单上,我的所有页面都像一个补充工具栏,我有一个链接,在我的文件系统中找到一个Microsoft Word文档(.docx)。我通过添加包含我的文档的Documents文件夹,然后指定要跟随的链接的路径来完成此操作。这适用于我的localhost上的任何页面,并且不会使用户远离当前页面。他们只需单击,文档就会推送到当前使用的页面。
@(Html.Telerik().Menu().Name("genMenu")
.Orientation(MenuOrientation.Vertical)
.HtmlAttributes(new { @class = "items" })
.Items(appMenu =>
{
appMenu.Add().Text("User Guide").Url("/Documents/My%20User%20Guide.docx");
}))
在另一个页面上,我有一个html元素执行类似的操作,除了它检索Excel工作表(.xlsx)。这也适用于我当地的主机。
<a href="/Documents/Upload%20Template.xlsx">
.xlsx</a>
但是,当我将此代码放在我的Dev网站上时,当我点击任一链接时收到此错误:
HTTP Error 503. The service is unavailable.
我的网站没有关闭,网站的其余部分功能齐全,但尝试获取我在本地主机上的文档会导致错误。此外,看起来我的Dev网站实际上是将用户直接带到他们点击的链接。这不应该发生。我知道这一点,因为当我点击Telerik菜单链接时,我会看到这个链接:
http://DevSite/Documents/My%20User%20Guide.docx
有没有人知道为什么我的开发网站上会出现这种行为,而不是我的本地主机?
我愿意以完全不同的方式做到这一点,但我的主要目标仍然是: 有一个用户可以单击的链接,从ASP.NET MVC站点文件系统中下载文档。
答案 0 :(得分:1)
尝试使用Url.Content()。此方法了解您的网站相对于IIS和目录路径的上下文。将虚拟路径映射到绝对路径。我的localhost环境和Dev服务器之间存在类似的问题:
<a href="@Url.Content("~/Documents/Upload%20Template.xlsx")">.xlsx</a>
请参阅此文章:URL.Content()