【问题标题】:Asp.net WebForms Error with Anonymous Types匿名类型的 Asp.net WebForms 错误
【发布时间】:2011-08-20 20:51:10
【问题描述】:

请帮帮我!我在使用 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 }) %> 

似乎不起作用。

【问题讨论】:

  • 您已经回答了自己的问题 - 将其放入方法中?
  • 谢谢——虽然我的简单示例在实践中没有意义——我实际上是在尝试将匿名类型对象作为参数传递给方法(有点像 MVC 的 HTML 助手的工作方式) .对于这种情况及其特殊要求,这不是一个好的答案,但谢谢。

标签: c# asp.net types webforms anonymous


【解决方案1】:

对我来说,如下:

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

输出匿名类型的结构:

{ property = somevalue }

您是否尝试输出“属性”的值?

如果是这样,请使用以下内容:

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

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

【讨论】:

  • 我上面的代码只是一个例子。我实际上是在将一个匿名类型对象传递给一个函数,有点像 MVC 的 HTML 助手的工作方式。也许项目的 web.config 有问题,或者如果这通常适用于 WebForms/2008/ASP.net 标记。
【解决方案2】:

我在 web.config 中发现了问题。显然,它在“system.codedom”标签下的“compilers”标签下缺少对 C# 编译器的引用。

      <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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多