首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 2与VS 2010视图构建错误:特性‘匿名类型’不能使用,因为它不是ISO-2 C#语言规范的一部分

MVC 2与VS 2010视图构建错误:特性‘匿名类型’不能使用,因为它不是ISO-2 C#语言规范的一部分
EN

Stack Overflow用户
提问于 2010-04-01 13:47:13
回答 4查看 4K关注 0票数 3

我有一个共享项目,在这里存储我所有的自定义EditTemplates和DisplayTemplates。这是一个常规的C#类库项目,其视图都标记为嵌入式资源。该项目的目标框架是".Net框架4“。

在/Views/文件夹中,我包含了这个web.config文件,因此在处理.aspx和.ascx文件时,我获得了MVC 2 intellisense:

代码语言:javascript
复制
<?xml version="1.0"?>
<configuration>
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc,     Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0,     Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral,   PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />  
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode"    type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

通常,我对这个设置没有问题,但是当我编译我的视图时,有一次会出错:

不能使用

错误3特性‘匿名类型’,因为它不是ISO-2 C#语言规范的一部分。

对于类似于以下内容的模板:

代码语言:javascript
复制
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%@ Import Namespace="System.Web.Mvc.Html" %>
<%
    string displayText = string.Empty;

    if (Model != null)
    {
        if (DateTime.Parse(Model.ToString()) != DateTime.MinValue)
            displayText = DateTime.Parse(Model.ToString()).ToShortDateString();
    }
%>

<%= Html.TextBox("", displayText, new { @class = "date-box" })%>

大多数情况下,这个错误就会消失。我已经学会了处理它,但现在它引起了一些问题。任何导致"Error 3特性‘匿名类型’的原因都不能使用,因为它不是ISO-2 C#语言规范的一部分“错误,以及我如何修复这个错误?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-01 15:33:43

在某种程度上,您的IDE体验导致4.0 C#编译器受限于编译器2.0版本中允许的特性。这可以使用langversion开关来完成。例如

csc /langversion:ISO-2 .

完整文档:http://msdn.microsoft.com/en-us/library/f4ckecs0.aspx

我不熟悉编译如何为Asp.Net MVC工作,但在您的项目系统中,您要求仅限于2.0框架。我的第一个猜测是查看项目的项目页面,确保它不是针对2.0的。

票数 4
EN

Stack Overflow用户

发布于 2012-05-04 12:11:44

我曾经面对过这个问题,并且花了很多时间,同时我发现App.Config文件中有空的配置部分是邪恶的根源。只需删除App.Config即可,一切都将正常工作。

票数 7
EN

Stack Overflow用户

发布于 2012-11-25 10:33:52

对我来说,解决方案是改变项目类型。

  1. 卸载项目
  2. 编辑项目
  3. 为此交换项目GUID

{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}:ProjectTypeGuids

(这是一个MVC3项目)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2560773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档