我正在将数据从表单发送到我的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 });
}
}
答案 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 });