MVC中的对象属性验证(使用Web服务)

时间:2010-09-16 19:03:38

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

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

网站的视图模型包含每组所需服务数据AccountDetails(包含AccountId,AccountType等),ContactDetails(包含名称,地址等)等的对象。

该服务有一个'CreateUser()'方法,它接受这些对象作为参数,然后它自己执行所有验证 - 交回一个Object,该Object包含已找到的任何错误的数组,包括具体财产/领域。

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

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

==进一步的信息让它变得更加清晰==

想象一下,我在本地(在View Model中)创建了ContactDetails类,我可以非常简单地执行此操作

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

    public string LastName { get; set; }
}

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

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

1 个答案:

答案 0 :(得分:2)

我认为你有两个选择:

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