ASP.NET MVC 2';在视图的上下文之外进行模型验证

ASP.NET MVC 2';在视图的上下文之外进行模型验证,asp.net,asp.net-mvc,validation,mobile,Asp.net,Asp.net Mvc,Validation,Mobile,我在网上看了这篇博文,觉得很酷。通过向类属性添加几个属性,然后自动获得客户端和服务器端验证(只要控制器检查有效模型),我看到了保持干燥的价值 也就是说,想象一个ASP.NET MVC应用程序在一个更大的上下文中。也许我有一个ASP.NET MVC应用程序,带有这种验证和所有功能,但是我想向新的客户端公开一些东西,比如iPhone或Android应用程序(不仅仅是移动浏览器)。我必须编写一些web服务或使用与我的ASP.NET MVC应用程序相同的底层存储库/服务的东西。我可以重复使用这些验证材料

我在网上看了这篇博文,觉得很酷。通过向类属性添加几个属性,然后自动获得客户端和服务器端验证(只要控制器检查有效模型),我看到了保持干燥的价值

也就是说,想象一个ASP.NET MVC应用程序在一个更大的上下文中。也许我有一个ASP.NET MVC应用程序,带有这种验证和所有功能,但是我想向新的客户端公开一些东西,比如iPhone或Android应用程序(不仅仅是移动浏览器)。我必须编写一些web服务或使用与我的ASP.NET MVC应用程序相同的底层存储库/服务的东西。我可以重复使用这些验证材料吗

我不需要重新编写客户端验证吗?我看不出有什么办法可以解决这个问题,因为我将把序列化对象从Objective-C或任何东西中反序列化为非C类


难道我不需要重新编写服务器端验证吗?我是否有办法在ASP.NET MVC控制器上下文之外的对象上调用ModelState(例如,作为我创建的与移动客户端对话的web服务的一部分)。

假设您正在谈论,它们实际上不是MVC的一部分。因此,您可以根据自己的意愿在其他地方使用它们

有,我想你可以看看,例如ModelBinder是如何实现的,并使用它编写你自己的服务

可能是按照与您之后相同的思路进行的—将验证规则转换为Javascript。不幸的是,我不确定您需要付出多少努力才能使xVal适应您的项目或重写它


至于在注释类上运行验证,可以使用(谢谢)

是的,它使用数据注释。但首先,我可以在c#之外的任何方式使用这些(例如,在iPhone的objective-c中)。第二,如何根据对象的数据注释验证对象?您需要使用反射并扫描注释的类。@Maxwell:我必须在自己身上进行反射,这似乎很奇怪。我会继续寻找,但如果需要,我可以写一些东西,并在web服务中共享。@Maxwell-这是错误的。您可以使用Validator类对数据批注手动运行验证@womp-谢谢。我想这就是我要找的。我稍后会试一试。这至少允许我轻松地验证来自web服务的对象。