使用MVC 3动态创建文件夹中所有文件的超链接

时间:2011-06-01 20:33:05

标签: asp.net-mvc hyperlink

我有一个控制器,它使用DirectoryInfo.GetFiles()返回目录中的文件列表

public ActionResult Index()
        { 
            DirectoryInfo vidDir = null;
            FileInfo[] files = null;

            string dirPath = @"/Content/Videos";
            vidDir = new DirectoryInfo(Server.MapPath(dirPath));
            files = vidDir.GetFiles();

            return View(files);
        }

在我看来,我使用以下代码枚举文件:

<ul>  @foreach (var file in Model) {
                  <li>
                   @file 
                  </li> 
            }
                  </ul>

我想做的是foreach (var file in Model) { create a hyperlink to file }

我能够使用@ html.actionlink

对链接进行硬编码
 @Html.ActionLink("Test Link", "file1.txt", "Content/Videos");

当我在@file中输入前两个参数时,我收到一条错误消息:

  

'System.Web.Mvc.HtmlHelper'   没有适用的方法命名   'ActionLink'但似乎有一个   名称为“

的扩展方法

如何使用@ html.Actionlink创建传递给视图的所有文件的超链接?

2 个答案:

答案 0 :(得分:3)

这些似乎是这些文件的直接链接。如果是的话

<a href="@Url.Content(string.Concat("Content/Videos/", @file))">@file</a>

答案 1 :(得分:0)

我正在使用下面的代码,它工作得很好

foreach (var menuName in menuNames)
{
    @Html.ActionLink(menuName.Value, menuName.ActionName, menuName.ControllerName)
}

(我在MVC 4中使用它)