控制器方法无法从重定向中捕获对象路由

时间:2019-02-05 09:32:20

标签: c# asp.net-core asp.net-core-mvc

我正在将数据从表单发送到我的Test方法中,并且数据在那里,

如果发生了某些错误,则将ModelInput映射到Model,然后使用通过对象路由发送的数据执行到MyView的重定向。由于某种原因,即使MyView中的input具有正确的值,input参数Test也为空

有人知道为什么重定向后我的数据(输入参数)丢失了吗?

顺便说一句:向导? ID已正确发送

public IActionResult MyView(Guid? id, Model input = null)
{
    // after redirect input is empty
    (...)
}

__

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Test(Guid id, ModelInput user_input)
{
    (...)
    if (error)
    {
        var input = new Model
        {
            FirstName = user_input.FirstName,
            SecondName = user_input.SecondName
        }

        return RedirectToAction(nameof(MyView), new { id, input });
    }
}

1 个答案:

答案 0 :(得分:1)

将对象作为路由参数传递的问题在于,通过为每个参数调用ToString来构建最终的url,而不是input.FirstName=value&input.SecondName=value,而得到的input=YourSolution.Controllers.YourController+Model显然是无效的。就您而言,以下代码足以解决问题

return RedirectToAction(nameof(MyView), new { id, input.FirstName, input.SecondName });