【问题标题】:RedirectToAction, areas and passing classRedirectToAction、区域和传递类
【发布时间】:2017-12-23 07:01:12
【问题描述】:

我正在.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函数调用正确,模型不为空,但模型所有属性为空。谁能告诉我我在这里做错了什么?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      并且所有信息都正确传递。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-14
        • 2017-05-20
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        • 2012-12-07
        相关资源
        最近更新 更多