是否可以使用Razor的@:运算符将Razor构造传递给辅助方法?

Mig*_*elo 5 helper razor asp.net-mvc-3

我试图通过使用razor的@:运算符将一些Html传递给辅助方法,但我无法弄清楚如何做到这一点.编译器声明Razor表达式是一个lambda表达式,但它没有说,这个lambda表达式是什么样的......根本就没有线索!

如果我尝试这样做:

        @(MyClass.MyMethod(new
            {
                Html = @:<div></div>
            }
        ))
Run Code Online (Sandbox Code Playgroud)

错误如下: Cannot assign lambda expression to anonymous type property

如果我尝试这样做,那么它再次声明它是一个lambda:

        @(MyClass.MyMethod(
            @:<div></div>
        ))
Run Code Online (Sandbox Code Playgroud)

如果MyMethod收到一个字符串:ie public string MyMethod(string razorConstructedString) ,那么编译器说:Cannot convert lambda expression to type 'string' because it is not a delegate type.

问题是:我应该声明什么类型的MyMethod,以便它可以接收剃刀构造的参数?

谢谢!

SLa*_*aks 9

这称为内联助手.
这是一个Func<AnyType, HelperResult>.

您可以使用参数调用此委托,并且可以在名为的帮助程序中访问该参数item.