我试图将使用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,以便它可以接收剃刀构造的参数?
谢谢!
答案 0 :(得分:9)
这称为inline helper
这是一个Func<AnyType, HelperResult>
。
您可以使用参数调用此委托,并且可以在名为item
的帮助程序中访问该参数。