'对象'不包含...的定义在视图中创建匿名模型对象

时间:2015-06-01 07:45:44

标签: asp.net-mvc asp.net-mvc-4 razor anonymous-types

我试图在视图文件中创建匿名类型以传递到部分视图,但是我收到以下错误:

  

'对象'不包含' 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">&laquo;</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">&raquo;</span>
                </a>
            </li>
        </ul>
    </nav>
}

有趣的是,如果我在 Pagination.cshtml 文件的第一行放置一个断点,我可以检查&#39;模型&#39;观察窗口中的对象。一旦我尝试Model.ResultSet,我会在Watch窗口中收到以下消息:

  

无法评估表达式。此错误的常见原因是尝试将lambda传递给委托。

我试图完成此任务的原因是扩展匿名类型以包括前端引用(元素ID等),我想在视图中指定这些,而不是在强大的控制器中键入的模型对象。我想这就是为什么创建匿名类型/对它有用的原因。

0 个答案:

没有答案