0

我正在开发一个由许多页面组成的 WebForms 应用程序,每个页面都包含一个用户填写的表单。每个表单对应于实体的一部分,这意味着来自一个页面/表单的数据填充实体字段或其子实体字段的一部分。

例如:第一页填写一个人的姓名和出生数据,第二页填写健康状况,第三页填写家庭信息等。这些数据当然应该是有效的,然后才能继续下一页。我的客户不想处理 jQuery 或 Javascript,所以这被排除在外。在这种情况下实施验证的“最佳实践”是什么?

Entity Framework 4 正在被使用,并且大多数 GUI 控件都是在 HTML 中实现的,而不是由 WebForms 控件实现的。

4

2 回答 2

2

如果您使用自定义 HTML 进行输入,那么您可能必须使用一些自定义代码进行验证。在您的服务器端表单处理程序中,您可以验证输入并在某些内容无效时将页面呈现给用户。输入检查可以很简单:

if (string.IsNullOrWhiteSpace(FormCollection["someRequiredInput"])

您可以遍历所有输入,根据业务逻辑检查它们,或许还可以构建错误列表。然后在输入检查之后,如果错误列表不为空,则将页面呈现给用户,并将错误添加到某种占位符中。如果列表为空,则继续处理表单发布。

即使不排除 JavaScript,您仍然希望执行服务器端验证。 永远不要假设客户端代码按预期工作,甚至完全执行。客户端验证不是一种安全措施,它只是一种更好的用户体验。服务器端验证是唯一真正的验证。

(因此,您仍然可以为添加的 UX 触摸添加客户端验证,如果客户端确实不允许 JavaScript,那么他们将看不到这一点,而只会使用服务器端验证。这有时被称为作为“优雅降级”,当用户禁用客户端技术时,您设计的 Web 应用程序仍然可以正常运行,尽管 UX 的优势稍差。)

于 2012-12-21T15:55:01.373 回答
2

我的客户不想处理 jQuery och[sic] Javascript,所以这被排除在外。

好的。Javascript 是执行验证的错误场所。您使用 javascript 进行的任何验证都只是性能优化。真正验证数据的唯一可接受的地方是在服务器上。

顺便说一句,.Net 包含一些您可以使用的方便的验证控件。其中一个控件是 CustomValidator,它很容易被覆盖并提供您自己的服务器端代码来执行您想要的任何规则。如果您使用网络表单,这些控件是一个明显的选择。

由于您有一个多页的方法,您可能还想查看 Wizard 控件。

于 2012-12-21T16:07:25.907 回答