【问题标题】:ServiceStack Razor - How to Return Validation Errors to a Form?ServiceStack Razor - 如何将验证错误返回到表单?
【发布时间】:2013-04-04 20:49:15
【问题描述】:

我试图弄清楚是否可以使用 ServiceStack Razor 进行老式的服务器端表单验证。

例如:对 url 的 GET 会返回带有表单的 razor 模板。当用户 POST 表单时,请求 DTO 被验证,如果有错误,用户会看到相同的表单,原始值重新填充为错误的字段,并且以某种方式标记错误。另一方面,如果请求 DTO 有效,则服务会将用户重定向到另一个页面。

这种情况可能吗?

如果是这样,人们将如何实施它?我想我必须编写某些过滤器或功能才能使其工作,但是我想知道哪种策略需要最少的编码。

(我知道 javascript 验证是可能的,但我的问题具体是是否可以通过服务器端验证来往返表单)。

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    看看 ss-validation.js,它可用于根据 ServiceStack 的 ResponseStatus 将验证错误应用于您的表单。

    所以我们使用 FluentValidation 编写所有验证代码服务器端,然后在往返 ss-validation 读取 ResponseStatus 并应用标记。

    开箱即用假设 Bootstrap 样式验证,但它很容易修改以满足您的需求,例如我们修改为显​​示内联图标工具提示而不是内联/阻止消息,并提供错误摘要。

    【讨论】:

    • 嗨,加文,感谢您的回复。我正在专门寻找 old-skool 发回服务器并重新加载表单,没有任何 js。当前的 master (v3.9.44) 不支持我需要的东西 - 验证错误会使服务执行短路,并且响应不提供带有发布值的请求 DTO。我已经写了一个补丁来解决这个问题,并希望在我在实践中尝试我的解决方案几天后,有时会在本周提交一个拉取请求。
    【解决方案2】:

    在对 ServiceStack 代码库进行大量探索之后,似乎理论上可以实现所需的场景。

    代码已经包含ModelMetadataModelMetadataProviders 类,并且一些HTML 助手是从System.Web.Mvc 移植的。

    遗憾的是,这些类并没有完全连接起来,所以我想这需要大量的工作才能让一切如预期的那样正常工作。

    【讨论】:

      猜你喜欢
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多