c# - 在服务器端验证后保留用户的输入
问题描述
我想在用户提交表单时保留用户的输入,如姓名、电子邮件和地址,但控制器上的验证失败并将它们重定向回页面。我应该使用 viewdata 将用户的输入传递回视图还是不好的做法?如果是这样,我应该使用什么?
解决方案
...在控制器上的验证失败并将它们重定向回页面。
您不应该在验证失败时重定向。只需使用发布的模型再次返回视图:
if (!ModelState.IsValid)
{
return View(model);
}
这假设您遵循 PRG(Post-Redirect-Get)模式并回发到相同的 URL。如果不是这种情况,您应该强烈考虑以这种方式重构您的代码。
发布到呈现表单的不同操作的唯一充分理由是表单是布局的一部分,或者放置在由多个不同操作呈现的多个不同视图上。如果是这种情况,最好的办法是拥有一个包含表单的视图,然后返回该视图,而不是在验证失败时重定向回原始操作。您可以提供一个带有 a 的隐藏输入returnUrl
来保留用户的原始 URL,一旦他们成功提交表单,您就可以将他们重定向回那个。
推荐阅读
- sql - 调整我的新脚本无效列并且不返回正确的表达式
- python - Airflow-Runtimeerror:无法启动新线程
- clojure - 多个有序数组的快速排序算法
- apache-spark - Kafka Spark Streaming:如何在最后一批中生产和消费一条记录
- image - 将 DFT 着色器分成两个通道的问题
- java - 如何创建唯一地图并使用流创建给定属性的字符串列表?
- javascript - React useState 钩子不会触发子组件重新渲染
- postgresql - 将 CSV 文件批量加载到 PostgreSQL 表中的最佳方法
- c - Code C:输入字符串,不允许输入@等特殊字符
- azure - Azure YAML ARM 模板 - 将 $Build 传递给 PowerShell 脚本