调用Funcon razor正在被ToString'ed而不是执行
本文关键字:string ed 执行 ToString Func on 调用 razor | 更新日期: 2023-09-27 18:16:26
假设我有这样一个简单的方法:
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函数上得到一个ToString(),而不是我想看到的实际方法调用,所以我看到的不是上面愚蠢的函数a的输出,而是这个
System.Func`2[System.String,System.String] ( "hello" )
批评我为什么不应该这样做是受欢迎的,但我在这里错过了什么?我想我忽视了一些明显的东西。
谢谢
您需要删除(
之前的空格,以便Razor解析器意识到它是您的@
代码的一部分。
似乎是空格的问题。
试
<h1 class="whatever" style="float:left">@X("hello")</h1>
如果还是不行,试试这个:
<h1 class="whatever" style="float:left">@(X("hello"))</h1>