匿名类型的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 }) %>
似乎不工作
对我来说,以下是:
<%= 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>