Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如何通过RedirectToAction传递类_Asp.net Mvc 3_Redirecttoaction - Fatal编程技术网

Asp.net mvc 3 如何通过RedirectToAction传递类

Asp.net mvc 3 如何通过RedirectToAction传递类,asp.net-mvc-3,redirecttoaction,Asp.net Mvc 3,Redirecttoaction,我有以下代码: public ActionResult Index() { AdminPreRegUploadModel model = new AdminPreRegUploadModel() { SuccessCount = successAddedCount, FailureCount = failedAddedCount, AddedFailure = addedFai

我有以下代码:

    public ActionResult Index()
    {
        AdminPreRegUploadModel model = new AdminPreRegUploadModel()
        {
            SuccessCount = successAddedCount,
            FailureCount = failedAddedCount,
            AddedFailure = addedFailure,
            AddedSuccess = addedSuccess
        };
        return RedirectToAction("PreRegExceUpload", new { model = model });
    }

    public ActionResult PreRegExceUpload(AdminPreRegUploadModel model)
    {
        return View(model);
    }

但当我在PreRegExcelUpload上设置断点时,模型为空。为什么?

使用会话将模型传递给方法:

public ActionResult Index()
{
    AdminPreRegUploadModel model = new AdminPreRegUploadModel()
    {
        SuccessCount = successAddedCount,
        FailureCount = failedAddedCount,
        AddedFailure = addedFailure,
        AddedSuccess = addedSuccess
    };
    Session["someKey"] = model;
    return RedirectToAction("PreRegExceUpload");
}

public ActionResult PreRegExceUpload()
{
    var model = (AdminPreRegUploadModel) Session["someKey"];
    Session["someKey"] = null;
    return View(model);
}

方法RedirectToAction()不能将非基元类型作为参数,因为url参数是字符串。

我建议使用
TempData
而不是在Evgeny Levin的答案中使用
Session
对象。请参阅关于
TempData

您还可以通过调用
return PreRegExceUpload(model)来解决这个问题
而不是
返回重定向到操作(..)
在您的
索引
函数中。

TempData只是会话的一个“智能”包装器,在引擎盖下它仍然以同样的方式工作

因为只有4个字段,所以我会通过querystring传递它们

始终尽可能避免使用会话/临时数据,在这种情况下肯定是这样

你确定那是你的全部密码吗?因为这毫无意义

如果您发布一些数据并将其保存到数据库(例如),通常会重定向到另一个传递唯一标识符的操作(该标识符通常在保存后生成),从数据库中取回数据并返回视图

这是更好的做法


如果您进一步解释一下您的场景,并展示您使用的正确代码,我可以进一步提供帮助。

使用会话在方法之间传递对象?那么最好使用TempData。但我想正确通过。。。