如何在视图中显示MVC4 Directory.GetFiles

时间:2014-12-21 04:35:54

标签: c# asp.net-mvc-4

我是编程的初学者,我正在尝试构建一个可以搜索目录并显示视图中找到的所有mvc应用程序。我搜索时会弹出一条错误消息。如果有人告诉我我做错了什么或指出我正确的方向,我将不胜感激。

错误信息是这样的:

>  The view 'C:\Users\carrick\Downloads' or its master was not found or
> no view engine supports the searched locations. The following
> locations were searched:
>     ~/Views/DirectorySearch/C:\Users\carrick\Downloads.aspx
>     ~/Views/DirectorySearch/C:\Users\carrick\Downloads.ascx
>     ~/Views/Shared/C:\Users\carrick\Downloads.aspx
>     ~/Views/Shared/C:\Users\carrick\Downloads.ascx
>     ~/Views/DirectorySearch/C:\Users\carrick\Downloads.cshtml
>     ~/Views/DirectorySearch/C:\Users\carrick\Downloads.vbhtml
>     ~/Views/Shared/C:\Users\carrick\Downloads.cshtml
>     ~/Views/Shared/C:\Users\carrick\Downloads.vbhtml

我的控制器看起来像这样

     public class DirectorySearchController : Controller
    {
        //
        // GET: /DirectorySearch/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult GetDirFiles(string directorySearch)
        {
            //first check directorySearch is a valid path

            //then get files
             Directory.GetFiles(directorySearch);
             ViewBag.message =  directorySearch;
            return View(ViewBag.message);
        }

    }
}

和我的观点

    @{
    ;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>GetDirFiles</title>
</head>
<body>
    <div>

        <h2>Search Results</h2>
        <ul>

            <li>@Viewbag.message;</li>

        </ul>
    </div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

在这一行

return View(ViewBag.message);

将其更改为

return View();

第一个参数是ViewName。 ViewBag被环境/隐式传递给视图,所以你不需要传递它。

答案 1 :(得分:1)

这一行:

return View(ViewBag.message);

您告诉它使用目录文件的名称呈现视图,因此您收到该错误消息的原因。 ViewBag已经传递到您的视图中,因此您不需要自己传递它。

你很可能只想要调用

的空参数
return View();

默认情况下会返回控制器中方法名称的视图。

除了您没有将文件传递给视图外,您还要传递路径。你需要做这样的事情。 请注意ViewBag(不是Viewbag)的情况

控制器:

ViewBag.message = string.Join(",", Directory.GetFiles(directorySearch));

查看:

<li>@ViewBag.message</li>

或者您可以在视图中编写一个简单的循环

控制器:

ViewBag.message = Directory.GetFiles(directorySearch);

查看:

@foreach(string file in ViewBag.message)
{
        <li>@file</li>
}