C# mvc控制器中的可选bool参数

C# mvc控制器中的可选bool参数,c#,asp.net-mvc,asp.net-mvc-routing,optional-parameters,C#,Asp.net Mvc,Asp.net Mvc Routing,Optional Parameters,以下是我想要的: [GET("page/{id}/")] public ActionResult Execute(Guid id, bool x = false, bool y = false, bool z = false) 我希望布尔值是可选的,这样我以后可以像这样使用此方法: return RedirectToAction<SomeController>(c => c.Exec

以下是我想要的:

 [GET("page/{id}/")]
    public ActionResult Execute(Guid id, bool x = false, bool y = false, 
                                         bool z = false)
我希望布尔值是可选的,这样我以后可以像这样使用此方法:

return RedirectToAction<SomeController>(c => c.Execute(id, y: true));
返回重定向到操作(c=>c.Execute(id,y:true));
不幸的是,当我尝试构建解决方案时,我遇到了以下错误:“表达式树可能不包含使用可选参数的调用”和“表达式树可能不包含命名参数规范”


我的问题是:有可能用控制器做这样的事情吗?路由中的可选参数如何?

您可以使用模型类。 比如:

public class ExecuteModel
{
    public Guid id {get;set;}
    public bool x {get;set;}
    public bool y {get;set;}
    public bool z {get;set;}
}
并将您的操作更改为:

public ActionResult Execute(ExecuteModel model)
{
   ...
}
您的重定向将变成:

return RedirectToAction<SomeController>(c => c.Execute(
    new ExecuteModel{id=id, y=true}));
返回重定向到操作(c=>c.执行(
新的ExecuteModel{id=id,y=true});