Asp.net mvc 3 验证ASP.Net(MVC 3)中配置文件属性的唯一性
我在MVC3ASP.Net应用程序中使用自己的配置文件提供程序。我已经使用ProfileBase类在这里这样做了 我的问题是,我有一个我想要唯一的属性,叫做“BlogSpace”。我如何验证这一点 目前,我已经在UserProfile类中创建了一个静态方法,在尝试保存之前在控制器中调用该方法。像这样: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
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());
你好我有完全相同的要求。你能解决这个问题吗?我现在用我问题的第一段代码。。。它的工作,但正如我所说,我感到震惊的是,它将严重规模时,我的使用基础将更大。。。如果你发现了比这更好的东西,请分享!:)