【问题标题】:Mimick ValidationSummary For Non-Model ErrorsMimick ValidationSummary For Non-Model Errors
【发布时间】:2012-05-16 23:41:39
【问题描述】:

我见过开发人员“利用”ModelState.AddModelError()ModelState 添加错误消息,即使这些错误与当前请求的模型验证无关。

我的看法是,重定向应该执行完全独立的“错误”操作并查看以显示错误消息。在这种情况下,会有一个专用的 ErrorModel,其呈现方式与 @Html.ValidationSummary 呈现的方式类似。

这就引出了一个问题:是否有其他人使用惯用的“ErrorModel”结构,和/或采用该模型并在某种程度上模仿 ValidationSummary 提供的表示的流行库/函数?

我可以制作自己的 ErrorModel 和 ValidationSummary 代码(我什至可以复制 MVC 源代码),但我更喜欢使用库或遵循其他人在这种情况下使用的模式。

【问题讨论】:

    标签: c# .net asp.net-mvc design-patterns idioms


    【解决方案1】:

    恕我直言,为此目的使用 ValidationSummary 很好,这就是原因:

    有 4 个版本,其中两个很重要:

    Html.ValidationSummary()
    Html.ValidationSummary(bool)
    

    第二个旨在仅显示模型错误,而不是属性错误。这意味着像“乔不能在星期一约会”这样的业务逻辑验证。第一个用于显示模型错误和属性错误。

    这是来自 Pro ASP.NET MVC3 Framework 的解释:

    ValidationSummary 辅助方法的一些重载允许我们 指定仅应显示模型级错误。错误 到目前为止,我们已经在 ModelState 注册了 属性级错误,表示值有问题 为给定属性提供并更改该值可以解决 问题。相比之下,当存在 由两个或多个属性之间的相互作用引起的一些问题 价值观。

    所以基本上我会说:你做得很好,不要打扰。当然,除非你有特定的原因。

    【讨论】:

    • 确实存在模型错误和属性错误的区别,但我说的错误既不属于属性也不属于模型。
    • (at)Leon:假设您使用 Chrome 提交了一个用户注册表单,并获得了一个 ValidationSummary,说明除非您使用资源管理器,否则您无法使用该站点。这样的问题与与该表单关联的模型无关。
    • 啊,好的。在这种情况下,我会说为此类事件创建单独的错误页面(或显示错误的通用页面)并将用户重定向到该页面是可行的方法。
    猜你喜欢
    • 2022-10-25
    • 2022-12-01
    • 1970-01-01
    • 2022-12-02
    • 2020-11-24
    • 2017-03-19
    • 2020-07-18
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多