在Asp.Net MVC中有关于从控制器传递数组的问题

时间:2016-09-22 07:36:29

标签: asp.net asp.net-mvc

我有一个控制器操作ActionResult,它将目录中的所有文件列为:

public ActionResult Index()
{
    string[] txtFiles = Directory.GetFiles(Server.MapPath("~/TextFiles/"));
    return View(txtFiles);
}

并在index.cshtml我有

@model List<txtFiles>   
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<ul>
@foreach (var i in Model)
    {
        <li>@Html.ActionLink(System.IO.Path.GetFileName(i), "FileContent")</li>
    }
</ul>

但我不确定我应该在model传递什么?我已经试过了 @model List<txtFiles>但它没有用,我收到了这个错误

enter image description here

3 个答案:

答案 0 :(得分:3)

使用@model string [] 要么         @model IEnumerable 代替         @model List。

因为txtFiles不是类型。希望这会对你有所帮助。

答案 1 :(得分:2)

您的模型不是List<txtFiles>,而是string[]

在视图中更改模型。

@model List<txtFiles>应该变为@model string[]@model IEnumerable<string>

答案 2 :(得分:2)

请使用Razor代码中的List<txtFiles>string[],而不是IEnumerable<string>。您尝试使用txtFiles作为类型,这是错误的,因为它是变量的名称。