Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 正在将列表发送到部分视图_Asp.net Mvc_Razor - Fatal编程技术网

Asp.net mvc 正在将列表发送到部分视图

Asp.net mvc 正在将列表发送到部分视图,asp.net-mvc,razor,Asp.net Mvc,Razor,我仍在努力让我的头脑围绕着.NETMVC,也许我只是没有搜索正确的关键词来找到我的答案 简言之,我有一个局部视图,其中包含一个我希望包含在主视图中的列表 Index.cshtml: @Html.Action("Checklist") Checklist.cshtml: @model List<Area> <div class="row"> <div class="col-md-4"> <h4 class="text-center

我仍在努力让我的头脑围绕着.NETMVC,也许我只是没有搜索正确的关键词来找到我的答案

简言之,我有一个局部视图,其中包含一个我希望包含在主视图中的列表

Index.cshtml:

@Html.Action("Checklist")
Checklist.cshtml:

@model List<Area>
<div class="row">
    <div class="col-md-4">
        <h4 class="text-center">Outcomes</h4>
        @foreach (var item in Model)
        {
            <p>@Html.DisplayFor(modelItem => item)</p>
        }
    </div>
</div>
编辑:我现在在测试网站时在html中得到一个奇怪的呈现。如果您查看页面源代码,我会看到:

System.Collections.Generic.List`1[System.String] List<Area>
System.Collections.Generic.List`1[System.String]List

您的视图需要类型为
List
的模型,但传递给它的
outcomearea
变量的类型似乎是
IEnumerable
IQueryable

尝试更改
Checklist.cshtml
以使其位于顶部:

@Model List<OutcomeArea>

Edit:刚刚注意到您正在执行
。选择(oa=>oa.Area)
,因此您实际上需要使用“Area”属性的任何类型
@Model List
@Model List
如果是字符串等,我认为此特定错误与lamdba不使用相同别名有关:

<p>@Html.DisplayFor(modelItem => item.Area)</p>
@Html.DisplayFor(modelItem=>item.Area)

@Html.DisplayFor(item=>item.Area)


lambda别名和用法必须匹配。我认为这就是CS1001错误通常所指的,但是@Ben的答案也是需要改变的;要么让模型expect IEnumerable,要么像他说的那样,在action方法中调用
ToList()
,以确保它是列表类型。

Html.DisplayFor(modelItem=>item.Area)应该是Html.DisplayFor(item=>item.Area)?@upsideDownBiot,这实际上是允许的,因为它使用了在循环中声明的
item
变量。我在查询
modelItem
的使用,因为这不是在循环中声明的。无可否认,@Brian Mains表达得更清楚了@它是VisualStudio为您生成razor视图的方式;他们无法在lambda中重新定义
item
,因为它已经在for循环中使用了名为
item
的变量。因为
Html.DisplayFor(=>)
需要一个lambda,所以他们必须在里面放一些东西。每天都是上学日:)你能在你的问题中编辑类
名称空间的定义吗。toModel
请:)是的,我想你是对的;但是我认为CS1001错误是由于模型类型不匹配而抛出的,它可能无法使用model关键字。但是如果我们在lambda中使用
,以及
for
循环中的变量,我们将有一个不同的错误:)
return PartialView("Checklist", outcomeAreas.ToList());
<p>@Html.DisplayFor(modelItem => item.Area)</p>
<p>@Html.DisplayFor(item => item.Area)</p>