C# 重定向操作发送对象

C# 重定向操作发送对象,c#,.net-core,C#,.net Core,我知道也有类似的问题,但这些问题只传递了一个值 我的问题是,使用RedirectToAction()方法时,属性对象总是空的。 但如果我使用int或string,我可以成功地将数据传递给Error方法 如果你看这幅画 如果我使用此代码,它将正常工作。 string error = "Test" return RedirectToAction("Error2", "Home", new { errorMessage = error }); ErrorViewModel error = new

我知道也有类似的问题,但这些问题只传递了一个值

我的问题是,使用RedirectToAction()方法时,属性对象总是空的。 但如果我使用int或string,我可以成功地将数据传递给Error方法

如果你看这幅画

如果我使用此代码,它将正常工作。

string error = "Test"
return RedirectToAction("Error2", "Home", new { errorMessage = error });
ErrorViewModel error = new ErrorViewModel
{
    RequestId = "Home",
    ControllerName = "Home Controller",
    ActionName = "Index",
    ErrorMessage = "Error Message 1"
};

return RedirectToAction("Error", "Home", new { errorMessage = error });
错误2获取错误消息
“Test”

但如果这不起作用。消息为空。

string error = "Test"
return RedirectToAction("Error2", "Home", new { errorMessage = error });
ErrorViewModel error = new ErrorViewModel
{
    RequestId = "Home",
    ControllerName = "Home Controller",
    ActionName = "Index",
    ErrorMessage = "Error Message 1"
};

return RedirectToAction("Error", "Home", new { errorMessage = error });
Error方法的errorMessage所有内容都为null

[AllowAnonymous]
public IActionResult Error(ErrorViewModel errorMessage)
{
    log.Log(errorMessage);
    return View(new ErrorViewModel
    { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
这是有效的

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 });
    }
这是有效的

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 });
    }

对于这样的复杂类型,请使用
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 });
}

对于这样的复杂类型,请使用
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 });
}

对于这样的复杂类型,请使用
TempData
。谢谢。我正在记录错误日志。我需要这个log.log()方法的数据。对于这样的复杂类型,请使用
TempData
。谢谢。我正在记录错误日志。我需要log.log()方法的这些数据。