我知道有类似的问题,但这些问题只是传递一个单一的价值。
我的问题是,属性对象在RedirectToAction()方法中总是为空。但是,如果使用int或string,则可以成功地将数据传递给Error方法。
如果你看这张照片。

--如果我使用这段代码,它就能工作.
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 });Error方法的errorMessage一切都为空。
[AllowAnonymous]
public IActionResult Error(ErrorViewModel errorMessage)
{
log.Log(errorMessage);
return View(new ErrorViewModel
{ RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}发布于 2019-09-06 11:48:06
对这样的复杂类型使用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 });
}发布于 2019-09-06 11:42:38
这很管用。
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 });
}https://stackoverflow.com/questions/57820982
复制相似问题