【发布时间】:2017-08-09 16:30:26
【问题描述】:
为什么我不能将Func<MyModel,bool> 类型的参数从Html.Action 传递给我的Controller?当我尝试以下代码时,它给了我这样的错误:
public PartialViewResult MyMethod(Func<MyModel,bool> lambda)
{
}
在 Razor 中:
@{var result = Html.Action("MyMethod", "MyController" , new { lambda = c => !c.Checked});}
错误:
无法将 lambda 表达式分配给匿名类型属性
这不是一个重复的问题,因为该问题正在寻找为什么会发生这种情况,但我正在寻找解决方案。
【问题讨论】:
-
因为
Html.Action动态确定实际方法(在您的情况下为MyMethod)并且没有关于您的方法的任何编译时信息。因此,它无法推断 lambda 表达式的实际类型 -
@Kolichikov 这个问题正在寻找为什么会发生这种情况,但我正在寻找解决方案。
-
@haim770 好吧,如果我将其作为字符串发送,那么如何将字符串转换为 func?我能做什么?
-
你试过投射吗?
@{var result = Html.Action("MyMethod", "MyController" , new { lambda = (Func<MyModel,bool>)(c => !c.Checked)});}.
标签: c# asp.net-mvc linq lambda