Можно ли передать конструкцию Razor вспомогательному методу, используя оператор Razor @:? - PullRequest
5 голосов
/ 01 августа 2011

Я пытаюсь передать Html, созданный с помощью оператора @: бритвы, вспомогательному методу, но я не могу понять, как это сделать.Компилятор утверждает, что выражение Razor является лямбда-выражением, но не говорит, на что похоже это лямбда-выражение ... никаких подсказок!

Если я попытаюсь сделать это:

        @(MyClass.MyMethod(new
            {
                Html = @:<div></div>
            }
        ))

Ошибка выглядит следующим образом: Cannot assign lambda expression to anonymous type property

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

        @(MyClass.MyMethod(
            @:<div></div>
        ))

Если MyMethod получает строку: то есть public string MyMethod(string razorConstructedString), тогда компилятор говорит: Cannot convert lambda expression to type 'string' because it is not a delegate type.

Вопрос в следующем: какого типа я должен объявить MyMethod, чтобы он мог получить созданный бритвой параметр?

Спасибо!

1 Ответ

9 голосов
/ 01 августа 2011

Это называется встроенным помощником .
Это Func<AnyType, HelperResult>.

Вы можете вызвать этот делегат с параметром, и этот параметр будет доступен в помощнике с именем item.

...