Asp.net mvc 3 验证ASP.Net(MVC 3)中配置文件属性的唯一性

Asp.net mvc 3 验证ASP.Net(MVC 3)中配置文件属性的唯一性,asp.net-mvc-3,optimization,unique,asp.net-profiles,Asp.net Mvc 3,Optimization,Unique,Asp.net Profiles,我在MVC3ASP.Net应用程序中使用自己的配置文件提供程序。我已经使用ProfileBase类在这里这样做了 我的问题是,我有一个我想要唯一的属性,叫做“BlogSpace”。我如何验证这一点 目前,我已经在UserProfile类中创建了一个静态方法,在尝试保存之前在控制器中调用该方法。像这样: public static bool ValidateUniquenessBlogSpace(string blogspace, string currentUsername, Membershi

我在MVC3ASP.Net应用程序中使用自己的配置文件提供程序。我已经使用ProfileBase类在这里这样做了

我的问题是,我有一个我想要唯一的属性,叫做“BlogSpace”。我如何验证这一点

目前,我已经在UserProfile类中创建了一个静态方法,在尝试保存之前在控制器中调用该方法。像这样:

public static bool ValidateUniquenessBlogSpace(string blogspace, string currentUsername, MembershipUserCollection col)
    {
        bool bUnique = true;

        foreach (MembershipUser user in col)
        {
            UserProfile userprofile = Create(user.UserName) as UserProfile;
            if (userprofile.BlogSpace == blogspace && userprofile.UserName != currentUsername)
                return false;
        }

        return bUnique;
    }
主要的问题是,它通过所有的成员,所以如果我的用户群增长,我不确定它会非常快。另一个问题是,通过从控制器调用此字段,我不确定如何返回到问题来自此字段的视图,并显示适当的消息…(请参见编辑)。我希望采用这种方法,但这种方法仅适用于数据库:

    public class UniqueBlogSpace : ValidationAttribute
            {
                public override bool IsValid(object value)
                {
                    DataContext db = new DataContext();
                    var userWithTheSameBlogSpace = db.Users.SingleOrDefault(
                        u => u.BlogSpace == (string)value);
                    return userWithTheSameBlogSpace == null;
                }
            }

[UniqueBlogSpace(ErrorMessage = "This name is already in use...")]
        public string BlogSpace { get; set; }
编辑

我现在知道如何与我的模型沟通,一个字段在控制器中有这样的问题。主要的问题仍然是,如果我的用户群增加,解析所有成员的方法将非常缓慢。是否有更好的方法验证唯一性

ModelState.AddModelError("Blogspace", new System.Exception());

你好我有完全相同的要求。你能解决这个问题吗?我现在用我问题的第一段代码。。。它的工作,但正如我所说,我感到震惊的是,它将严重规模时,我的使用基础将更大。。。如果你发现了比这更好的东西,请分享!:)