我有一张带有一张图片上传和一张提交按钮的表单。
当我按下提交按钮时,我可以在我的控制器中读取上传的图像信息(见图1)
问题是,当我从此控制器将上传的图像信息传递给另一个控制器时,请参阅图像2
"另一个" controller没有获取图像信息,其HttpPostedFileBase为null / 0
为什么会这样做,我该怎么办?
[HttpPost]
[UserAuthorize(Roles = "User")]
[ValidateAntiForgeryToken]
public ActionResult NewProject(NewUserProjectViewModel model)
{
return RedirectToAction("previewProject", model);
}
[UserAuthorize(Roles = "User")]
public ActionResult previewProject(NewUserProjectViewModel model)
{
return View(model);
}
答案 0 :(得分:0)
RedirectToAction实际上向浏览器发送302响应,新url作为位置标头值,浏览器将读取此响应并向新URL发出全新的GET请求。您无法使用RedirectToAction传递复杂模型。
你有几个选择
您可以直接从PreviewProject
操作方法调用NewProject
视图并传递该对象。
public ActionResult NewProject(NewUserProjectViewModel model)
{
return View("previewProject", model);
}
发送RedirectResult响应时,您可以保留模型数据并将唯一ID传递给下一个操作方法。在第二个操作方法中,使用此唯一ID的参数,然后使用该参数再次获取数据并使用该参数。
public ActionResult NewProject(NewUserProjectViewModel model)
{
var id = SaveModelAndReturnUniqueID(model);
return RedirectToAction("previewProject", new {id=id});
}
public ActionResult previewProject(int id)
{
NewUserProjectViewModel model= GetNewUserProjectViewModel(id);
return View(model);
}