匿名类型的Asp.net WebForms错误

本文关键字:net WebForms 错误 Asp 类型 | 更新日期: 2023-09-27 18:06:18

请帮帮我!我在使用Visual Studio 2008的Asp.net/WebForms中遇到了一个奇怪的匿名类型问题。在页面标记中,这会生成一个"Type Expected"错误(只是一个示例):

<%=new { property = "somevalue" }.ToString() %> 

或者

<%var x = new { property = "somevalue" }; 
Response.Write(x.ToString()); %>

如果我把它放在一个方法中,这工作得很好:
<%=ShowIt() %> 

…在后台代码…

public string ShowIt() 
{ return new { property = "somevalue" }.ToString(); } 

我能做些什么来让Web表单识别匿名类型/语法?
我试过谷歌。

请注意:我知道上面的代码不是好的做法。在这个项目中,我似乎根本不能在标记中使用匿名类型。IE:甚至作为参数传递:

<%=ShowIt(new { prop1 = "a", prop2 = 2 }) %> 

似乎不工作

匿名类型的Asp.net WebForms错误

对我来说,以下是:

<%= new { property = "somevalue" }.ToString() %> 

输出匿名类型的结构:

{ property = somevalue }

您正在尝试输出"property"的值吗?

<%= new { property = "somevalue" }.property.ToString() %> 

无论哪种方式,正如上面Smudge202所述,您都应该真正使用代码隐藏方法,因为您可以使用一个好的方法名来使您的标记自我文档化。

我在web.config中发现了这个问题。显然,它在"系统"下的"编译器"标签下缺少对c#编译器的引用。codedom"标签。

      <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v3.5"/>
        <providerOption name="WarnAsError" value="false"/>
      </compiler>