【问题标题】:Object property validation in MVC (using web service)MVC 中的对象属性验证(使用 Web 服务)
【发布时间】:2023-04-07 22:54:02
【问题描述】:

我有一个 ASP.Net MVC 站点,它连接到 Web 服务。

站点的视图模型包含每组所需服务数据AccountDetails(包含AccountId、AccountType等)、ContactDetails(包含Name、Address等)等对象。

服务有一个“CreateUser()”方法接受这些对象作为参数,然后它自己执行所有的验证——返回一个对象,该对象包含已发现的任何错误的数组,包括名称特定的属性/字段。

我想知道是否有办法将此返回的错误数据传递到 DataAnnotations 或其他东西中。

我特别不能在模型本身中编写条件,因为 Web 服务中的验证条件随时都可以更改 - 我们希望这决定什么失败和什么成功。

== 更清晰的信息 ==

假设我在本地(在视图模型中)创建 ContactDetails 类,我可以非常简单地做到这一点

public class ContactDetails
{
    [IsRequired()]
    [CustomAttributeofSomekind]
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

但是在这种情况下 - 如果我们想要更改验证标准,无论出于何种原因,我们都必须在 Web 服务和访问该服务的所有客户端网站中都进行更改。

我们不想这样做 - 相反,如果(在上面的)场景中突然需要 ContactDetails.LastName 并且不得超过 10 个字符 - 这应该只需要在 Web 服务中更新。

【问题讨论】:

  • 我很困惑...你能改写这个吗?尤其是将此返回的错误数据传递到DataAnnotations 或其他东西中 的意思。如果也能显示一些代码就好了。

标签: asp.net asp.net-mvc web-services validation


【解决方案1】:

我认为你有两个选择:

  1. 创建一个 User 类来包装 CreateUser() 方法并向其中添加 DataAnnotations(这就是我要做的,它允许您进行强类型化。)
  2. 直接从控制器 Action 调用 CreateUser() 方法并使用服务器端验证。当违反任何验证规则时,将 CreateUser() 结果中的每个验证错误添加到 ModelState.Errors 集合中。

【讨论】:

  • 谢谢!我认为出于我们的目的,我们将使用 ModelState.Errors,因为这样可以确保我们可以将所有验证规则完全保留在服务中
猜你喜欢
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
相关资源
最近更新 更多