我试图在视图文件中创建匿名类型以传递到部分视图,但是我收到以下错误:
'对象'不包含' ResultSet'
的定义
我试图将匿名对象作为模型传递给视图,如下所示:
@Html.Partial("~/Views/Shared/Components/Pagination.cshtml", new { ResultSet = Model.UserPlaces });
我已经进行了一些搜索,有些答案提到你不能在控制器中创建匿名类型并传递给视图(https://stackoverflow.com/a/7652765/495328)但是我没有创建此示例中的控制器中的匿名类型。
此外,其他SO问题似乎表明此问题是由于另一个视图中的错误而出现的,并且根本与匿名类型无关。但是,在这种情况下,我不相信这是一个问题,因为当传递给视图的模型只是Model.UserPlaces
而不是new { ResultSet = Model.UserPlaces }
我的 Pagination.cshtml 视图文件如下所示:
@if (Model.ResultSet.TotalResults > Model.ResultSet.Limit)
{
<nav>
<ul class="pagination" data-base-url="@Model.ResultSet.BasePageUrl">
<li>
<a href="#" onclick="tracklas.pagination.loadResults('prev', this); return false;" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
@for (int i = 1; i < ((Model.ResultSet.TotalResults / Model.ResultSet.Limit) + 1); i++)
{
<li class="@(i == 1 ? "active" : "")" data-page-num="@i"><a href="#" onclick="tracklas.pagination.loadResults('@i)', this); return false;">@i</a></li>
}
<li>
<a href="#" onclick="tracklas.pagination.loadResults('next', this); return false;" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
}
有趣的是,如果我在 Pagination.cshtml 文件的第一行放置一个断点,我可以检查&#39;模型&#39;观察窗口中的对象。一旦我尝试Model.ResultSet
,我会在Watch窗口中收到以下消息:
无法评估表达式。此错误的常见原因是尝试将lambda传递给委托。
我试图完成此任务的原因是扩展匿名类型以包括前端引用(元素ID等),我想在视图中指定这些,而不是在强大的控制器中键入的模型对象。我想这就是为什么创建匿名类型/对它有用的原因。