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

时间:2011-08-01 14:34:19

标签: asp.net-mvc-3 razor helper

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

如果我尝试这样做:

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

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

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

        @(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 个答案:

答案 0 :(得分:9)

这称为inline helper 这是一个Func<AnyType, HelperResult>

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