当用户提交表单时,我想保留用户的输入,如姓名,电子邮件和地址,但该表单在控制器上未通过验证,并将其重定向回页面。我应该使用viewdata来将用户的输入传递回视图吗,还是不好的做法?如果是这样,我应该怎么用?
答案 0 :(得分:0)
...在控制器上的验证失败,并将其重定向回页面。
您不应在验证失败时重定向。只需使用发布的模型再次返回视图即可:
if (!ModelState.IsValid)
{
return View(model);
}
这假定您正在遵循PRG(后重定向获取)模式并回发到同一URL。如果不是这种情况,则应强烈考虑以这种方式重构代码。
要张贴到另一个动作的唯一好原因是,呈现表单的原因是表单是布局的一部分,还是放置在由多个不同动作呈现的多个不同视图上。如果是这种情况,最好的选择是拥有一个包含表单的视图,然后返回该视图,而不是在验证失败时重定向回原始操作。您可以提供带有returnUrl
的隐藏输入来保留用户的原始URL,一旦他们成功提交了表单,您就可以将他们重定向回该原始URL。