服务器端验证后保留用户的输入

时间:2018-11-12 13:41:19

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

当用户提交表单时,我想保留用户的输入,如姓名,电子邮件和地址,但该表单在控制器上未通过验证,并将其重定向回页面。我应该使用viewdata来将用户的输入传递回视图吗,还是不好的做法?如果是这样,我应该怎么用?

1 个答案:

答案 0 :(得分:0)

  

...在控制器上的验证失败,并将其重定向回页面。

您不应在验证失败时重定向。只需使用发布的模型再次返回视图即可:

if (!ModelState.IsValid)
{
    return View(model);
}

这假定您正在遵循PRG(后重定向获取)模式并回发到同一URL。如果不是这种情况,则应强烈考虑以这种方式重构代码。

要张贴到另一个动作的唯一原因是,呈现表单的原因是表单是布局的一部分,还是放置在由多个不同动作呈现的多个不同视图上。如果是这种情况,最好的选择是拥有一个包含表单的视图,然后返回该视图,而不是在验证失败时重定向回原始操作。您可以提供带有returnUrl的隐藏输入来保留用户的原始URL,一旦他们成功提交了表单,您就可以将他们重定向回该原始URL。