gpt4 book ai didi

c# - 强类型 View 中的新错误 - 无法枚举模型?

转载 作者:行者123 更新时间:2023-12-02 10:47:18 26 4
gpt4 key购买 nike

这个问题不太可能帮助任何 future 的访客;它只与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the help center .




8年前关闭。




我目前正在使用 ASP.NET MVC 2.0 RC2,最近从 1.0 版迁移。

我注意到我的一些观点不再有效。我的 View 继承自强类型 IEnumerable , 像这样:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyProject.Models.MyType>>"

过去,我在我的 View 中列举了这样的模型:
<% foreach (var item in Model) { %>

但这不再有效。我在浏览器中收到错误:
foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'

I can fix it by performing the requisite casts:

<% foreach (MyType item in (IEnumerable<MyType>)Model) { %>

但这很丑陋,它表明行为发生了变化,所以我需要知道为什么。

我查了一下, ViewPage.Model确实定义为 object ,所以我想知道这怎么可能像以前那样工作。它也被定义为 object在 ASP.NET MVC 1.0 中。

是什么赋予了?

注意:我已将 MVC 源代码加载到我的项目中。那会有什么不同吗?是否有一些在运行时注入(inject)的元数据使这项工作能够通过查看 object 来阻止这样做源码中的定义?

最佳答案

FWIW,ViewPage.ModelTModel 类型在 ViewPage<TModel> ,您正在使用的通用类。 (在您的示例代码中,TModelIEnumerable<MyProject.Models.MyType>)。所以它不应该是直的object .

如果您更改 @Page 会有所不同吗?到

Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyType>>"

并添加一个
<%@ Import namespace="MyProject.Models" %>

线到 View ?

关于c# - 强类型 View 中的新错误 - 无法枚举模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com