2016-09-22 117 views
1

我有一个控制器的动作ActionResult这是列出目录下的所有文件为:有问题在传递数组从控制器查看Asp.Net MVC

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

+1

'@model IEnumerable ' – haim770

+0

感谢haim770,能否请让我知道@model IEnumerable 在这里做的是什么作用? – Suffii

回答

2

你的模型是不是List<txtFiles>但在你的视图string[]

改变模型。

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

+0

谢谢拉斐尔,但你能让我知道'@model IEnumerable '在这里做什么吗? – Suffii

+0

在@model中,你应该有你的模型的类型。 'txtFiles',这是你发送的模型,是'string []'(这是'Directory.GetFiles'返回的内容)。而数组实现IEnumerable,所以你也可以使用'IEnumerable '。 –

2

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

3

使用@model的String [] 或 @model IEnumerable的 代替 @model名单。

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

相关问题