我的控制器中有这个方法:
public async Task<ActionResult> GetDetails(Query query)
{
var son = await Task.Run(() =>
{
if(query.Export)
{
return RedirectToAction("GetDetails", "GridToolController");
}
if (!query.Export)
{
db.Configuration.AutoDetectChangesEnabled = false;
}
}
}
正如你所看到的,我想去另一个控制器,但是当我写回来时,它会给出这些错误:
匿名函数转换为void返回委托不能 返回一个值
无法将lambda表达式转换为预期的委托类型,因为 块中的某些返回类型不可隐式转换 到委托的返回类型
你能告诉我怎么能从这个控制器转到另一个控制器吗?感谢。
答案 0 :(得分:1)
转换为void返回委托的匿名函数无法返回值
该行解释得很好,您正在创建一个返回void的匿名函数() =>
。这可能令人困惑,Task.Run返回Task
这不是无效的,但它没有像Task那样的通用类型。但是有Task.Run可以很好地返回Task<TResult>
,因为
块中的某些返回类型不能隐式转换为委托返回类型
在该代码的某些地方猜测你正在做其他没有返回RedirectToAction
的事情。明确的类型可能无法解决这个问题,但应该帮助您找到问题,即
var son = await Task.Run<ActionResult>(() =>
您的代码上的其他一些点也可能值得检查