Asp.net WebForms Ошибка с анонимными типами - PullRequest
2 голосов
/ 21 августа 2011

Пожалуйста, помогите мне!Я испытываю странную проблему с анонимными типами в Asp.net/WebForms с использованием Visual Studio 2008. В разметке страницы это приводит к ошибке «Ожидаемый тип» (просто пример):

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

Или даже

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

Если я добавлю это в метод, это прекрасно работает:

<%=ShowIt() %> 

... в коде позади ...

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

Что можно сделать, чтобы веб-формы распознавали анонимный тип / синтаксис?
Я попробовал Google.

ОБРАТИТЕ ВНИМАНИЕ: я знаю, что приведенный выше код не является хорошей практикой.Я не могу использовать анонимные типы ВСЕ в разметке в этом проекте.IE: даже передавая в качестве аргумента:

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

Не похоже на работу.

Ответы [ 2 ]

3 голосов
/ 21 августа 2011

Для меня следующее:

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

выводит структуру анонимного типа:

{ property = somevalue }

Вы пытаетесь вывести значение «свойства»?

Если это так, используйте следующее:

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

В любом случае, как указано выше в Smudge202, вам действительно следует использовать метод с выделенным кодом, поскольку вы можете сделать самодокументирование разметки с хорошим именем метода.

0 голосов
/ 22 августа 2011

Я обнаружил проблему в web.config.Очевидно, в нем отсутствовала ссылка на компилятор C # в теге «compilers», который находится в теге «system.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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...