RedirectToAction,区域和传递类

时间:2017-07-18 12:04:13

标签: c# asp.net-core asp.net-core-mvc

我正在.Net Core(Netcoreapp 1.1)中创建一个网站。有一次,我需要将操作从一个控制器重定向到另一个控制器,并使用以下代码将信息传递到目标操作:

public class MyInfo() 
{
    public string Area {get;set;}
    public string Controller {get;set;}
    public string Action {get;set;}
    public string UserId {get;set;}
}

public class FirstController() : Controller 
{
    public IActionResult SelectUser() 
    {
        return RedirectToAction("SelectUser", "Users", new 
        {
            Area = "Security",
            model = new MyInfo()  
            {
                Area = "Weapons",
                Controller = "First",
                Action = "SelectUserCallback",
            }
        });
    }
}

public class UsersController() : Controller 
{
    public IActionResult SelectUser(MyInfo model)  
    {
        //Show a dialog, set the results in model and return
    }
}

此代码的对象是显示一个显示用户列表的对话框,允许选择一个用户,然后将所选用户返回到MyInfo表示的回调。正确调用SelectUser函数,模型不为null,但模型的所有属性都为null。谁能告诉我我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

.net mvc目前尚不支持将参数从一个操作传递到另一个操作。您需要使用临时存储解决方案(如临时数据或会话)或持久存储(如数据库),以便按照您的方式工作。

答案 1 :(得分:0)

终于找到了解决方案。似乎参数可以从一个动作传递到另一个动作,而不是作为复杂的对象。我将方法的签名更改为:

public IActionResult SelectUser(string callbackAction, string callbackController, string callbackArea)

所有信息都正确传递。