在razor上调用Func <string,string>是ToString&#39;而不是执行

时间:2015-10-07 18:01:00

标签: c# razor func

想象一下,我有这个简单的方法:

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" ) 

对我不应该这样做的批评是受欢迎的,但我在这里缺少什么?我认为我对明显的事情视而不见。

感谢名单

2 个答案:

答案 0 :(得分:1)

您需要删除(之前的空格,以便Razor解析器意识到它是您@代码的一部分。

答案 1 :(得分:0)

似乎问题是间距。

尝试

<h1 class="whatever" style="float:left">@X("hello")</h1>

如果这仍然不起作用,请尝试:

<h1 class="whatever" style="float:left">@(X("hello"))</h1>