2010-09-16 78 views
1

我有一个ASP.Net MVC站点,它连接到一个Web服务。MVC中的对象属性验证(使用Web服务)

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

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

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

我明确地不能在模型本身中编写条件,因为Web服务中的验证条件随时可以更改 - 而且我们希望这可以规定什么失败以及哪些成功。

==进一步信息赞成使它更清楚一点==

想象我是在本地(视图模型内)创建ContactDetails类,我可以很简单地做到这一点

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

    public string LastName { get; set; } 
} 

然而,在这种情况下 - 如果我们想改变验证标准,无论出于什么原因,我们都不得不在Web服务和所有访问该服务的客户端网站中对其进行更改。

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

+0

我很困惑...你可以改写这个吗?特别是你的意思是*将返回的错误数据传递给DataAnnotations或其他*。如果可以显示一些代码也是很好的。 – Charlino 2010-09-16 20:50:47

回答

2

我认为你有两个选择:

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

谢谢!我认为出于我们的目的,我们将使用ModelState.Errors,因为这可以确保我们可以将所有验证规则与服务保持一致 – isNaN1247 2010-09-17 08:56:46