我知道也有类似的问题,但是这些问题仅传递一个值。
我的问题是,使用RedirectToAction()方法,属性对象始终为null。 但是,如果使用int或string,则可以成功将数据传递给Error Method。
如果您看图片。
如果我使用此代码,它将正常工作。
string error = "Test"
return RedirectToAction("Error2", "Home", new { errorMessage = error });
错误2收到错误消息"Test"
[AllowAnonymous]
public IActionResult Error2(string errorMessage)
{
return View(new ErrorViewModel
{ RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
,但是如果这不起作用。消息为 null 。
ErrorViewModel error = new ErrorViewModel
{
RequestId = "Home",
ControllerName = "Home Controller",
ActionName = "Index",
ErrorMessage = "Error Message 1"
};
return RedirectToAction("Error", "Home", new { errorMessage = error });
错误方法的errorMessage一切都为空。
[AllowAnonymous]
public IActionResult Error(ErrorViewModel errorMessage)
{
log.Log(errorMessage);
return View(new ErrorViewModel
{ RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
答案 0 :(得分:2)
将TempData
用于类似的复杂类型。
ErrorViewModel error = new ErrorViewModel {
RequestId = "Home",
ControllerName = "Home Controller",
ActionName = "Index",
ErrorMessage = "Error Message 1"
};
TempData["Message"] = error;
return RedirectToAction("Error", "Home");
并在目标操作中检索它
[AllowAnonymous]
public IActionResult Error() {
if (TempData["Message"] != null) {
ErrorViewModel errorMessage = (ErrorViewModel) TempData["Message"];
log.Log(errorMessage);
}
return View(new ErrorViewModel
{ RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
答案 1 :(得分:0)
这正在工作。
public IActionResult Index()
{
return RedirectToAction("Error", "Home", new ErrorViewModel
{
RequestId = "Home",
ControllerName = "Home Controller",
ActionName = "Index",
ErrorMessage = "Error Message 1"
});
}
[AllowAnonymous]
public IActionResult Error(ErrorViewModel error)
{
log.Log(error);
return View(new ErrorViewModel
{ RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}