在RedirectToAction中传递ViewModel,导致ViewModel属性为null

时间:2017-11-07 12:52:27

标签: c# asp.net-mvc

我有一个要求,我需要将ViewModel的同一个实例传递给控制器​​中的多个动作。我知道您可以使用RedirectToAction执行此操作,如下所示。 ViewModel有一个名为ServiceTimes的属性(列表)。其中有一个项目,但是在输入OnlineBookingStaff操作时,此处的ServiceTimes属性为null。这是为什么?

[HttpPost]
public async Task<IActionResult> OnlineBookingServices(OnlineBookingViewModel viewModel)
{
    try
    {
        return RedirectToAction(nameof(OnlineBookingStaff), viewModel);
    }
}

行动看起来像这样:

public async Task<IActionResult> OnlineBookingStaff(OnlineBookingViewModel viewModel)
{
    try
    {
        return View(viewModel);
    }
    catch (Exception ex)
    {
        await ExceptionAsync("Problem displaying Staff, Please try again later.", ex, false, true);
        return View();
    }
}

1 个答案:

答案 0 :(得分:1)

RedirectToAction发送HTTP 302响应并导致客户端重定向,最终会以GET形式返回到网址,从而丢失您的模型。

您可以直接调用它:

[HttpPost]
public async Task<IActionResult> OnlineBookingServices(OnlineBookingViewModel viewModel)
{
    return await OnlineBookingStaff(viewModel);
}