强类型视图中使用通用模型时出现"Unknown element"。

4

我在razor视图中定义通用模型时遇到了问题。每当我使用通用模型时,都会出现以下警告:

未知元素'string'或元素不能放置在此处。

例如:

@model List<string>

尽管这不会引起任何重大错误,但它仍然非常烦人。有没有一种方法可以在Razor视图中定义泛型而不会引起此警告?
环境: VS 2013 ASP.NET MVC v5.1.2 Razor 3.1.1
4个回答

4
我遇到了同样的问题,后来发现当我升级到最新版本的MVC时,并不是所有的配置元素都被正确地更新了。按以下方式更改Web.config可以解决这个问题:
  1. 确保任何提到 System.Web.Mvc 的行都将版本号更改为 5.0.0.0
  2. 确保任何提到 System.Web.WebPages.Razor 的行都将版本号更改为 3.0.0.0

1
那是最奇怪的问题。谢谢! - Dustin E

3

在使用通用类型并且web.config中的版本是正确的时候,我遇到了同样的问题。我不得不将其包装在代码块中以消除警告。

@{
    @model List<MyModelType>
}

没想到测试这个解决方案,但对我有效,谢谢! - aeliusd
这对我也起作用了,但为什么另一种方式不起作用呢? - swagers
我想补充一下,我通过更新我的Visual Studio到最新版本来解决了我的问题。 - swagers
难以置信! - SamuraiJack

2

我曾经遇到过同样的问题,原因是从MVC 4升级到5时出现了不完整的升级。 StriplingWarrior的建议有所帮助,但还需要对根web.config进行以下更改:

<add key="webpages:Version" value="3.0.0.0" />

(从版本2.0.0.0开始)

然后重新启动Visual Studio。完成这两步骤后,问题终于得到解决。


1
使用小写字母m
@model List<string>

不错的发现,但这并没有解决我的问题。我已经更正了我的示例代码。 - Dustin E
你还是遇到了同样的错误或者是其他问题?也许需要完全限定名称?@model System.Collections.Generic.List<string> - Anthony Chu
@Dustin E - 清理并重新构建项目,可能会有所帮助。 - afzalulh
实际上是同样的错误。示例代码中有一个拼写错误。我在其他生产代码中也收到了这个错误,包括完全限定的模型声明。 - Dustin E

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接