想象一下,我有这个简单的方法:
public string A ( string key )
{
return "_" + key + "_";
}
在类的构造函数中,我这样说:
public Func<string, string> F;
public AClass( )
{
F = A;
}
在控制器中,我返回Func,如下所示:
var a = new AClass();
ViewBag.MyFunc= a.F;
然而,在视图中这样的东西
@{
var X = ViewBag.MyFunc;
}
// ...
<h1 class="whatever" style="float:left">@X ( "hello" )</h1>
意味着我在渲染的F func上得到一个ToString(),而不是我想看到的实际方法调用,所以不是上面的傻功能A的输出,我看到了这个
System.Func`2[System.String,System.String] ( "hello" )
对我不应该这样做的批评是受欢迎的,但我在这里缺少什么?我认为我对明显的事情视而不见。
感谢名单
答案 0 :(得分:1)
您需要删除(
之前的空格,以便Razor解析器意识到它是您@
代码的一部分。
答案 1 :(得分:0)
似乎问题是间距。
尝试
<h1 class="whatever" style="float:left">@X("hello")</h1>
如果这仍然不起作用,请尝试:
<h1 class="whatever" style="float:left">@(X("hello"))</h1>