我的 silverlight 解决方案有 3 个项目文件
- Silverlight 部分(客户端)
- Web 部件(服务器)
- 实体模型(我在一个单独的项目中维护了 edmx 和元数据)
元数据文件是具有相关数据注释验证的部分类。
[MetadataTypeAttribute(typeof(User.UserMetadata))]
public partial class User
{
[CustomValidation(typeof(UsernameValidator), "IsUsernameAvailable")]
public string UserName { get; set; }
}
现在我的问题是我需要在哪里保留此类 UsernameValidator 如果我的元数据类和 edmx 在服务器端(Web),那么我知道我需要在我的 Web 项目中创建一个 .shared.cs 类,然后添加正确的静态方法。
我的 IsUserAvailable 方法实习生将调用 domainservice 方法作为 asyc 验证的一部分。
[Invoke]
public bool IsUsernameAvailable(string username)
{
return !Membership.FindUsersByName(username).Cast<MembershipUser>().Any();
}
如果我的元数据类与我的域服务在同一个项目中,那么我可以从我的 UsernameValidator.Shared.cs 类中调用域服务方法。
但是这里我的实体模型和元数据在单独的库中。
任何想法将不胜感激
Jeff 在这里很好地解释了 asyc 验证 http://jeffhandley.com/archive/2010/05/26/asyncvalidation-again.aspx 但这仅在您的模型、元数据和共享类都在服务器端时才有效。