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。但我想正确通过。。。