-1

我正在处理一个包含用户列表的 asp.net 页面。我想编辑这些用户。每个用户都有一个唯一的电子邮件地址。在更新页面上,单击“保存”按钮,我正在检查是否存在针对在表单的电子邮件地址字段中键入的电子邮件地址的用户。如果不是,那么我想显示错误。另外,我想确保用户不会在其他用户使用的更新表单上输入电子邮件地址。如何确保用户键入的电子邮件地址未被其他用户使用?

这是我到目前为止使用的代码:

 UserAuthentication ua1 = null;
 ua1 = UserAuthenticationManager.GetUserByEmail(objUserProfile.Email);

 if (ua1 != null)
 {
   //update
 }

请建议

4

3 回答 3

1

使用 action asJsonAction并检查 action 并将状态返回到 this 中。

于 2013-05-24T05:37:08.043 回答
1

你的意思是你需要一个验证属性?RemoteValidation会为你工作。

但是,如果您只想为这两个操作执行一个请求,那么您将不得不仅通过服务器验证来解决此唯一检查。您可以编写自定义验证器(网上有很多示例),或者您可以作弊并执行类似的操作

if (ModelState.IsValid)
{
   if (UserAuthenticationManager.IsUniqueByEmail(model.Id, model.Email))
   {
      // do update
   }
   else
   {
      ModelState.AddModelError("", "The user email already exists");
   }
}

不过,请确保您的视图中有一个验证摘要。

IsUniqueEmail 后面通过电子邮件发现重复项的 Sql 应该如下所示

select *
from Users
where Id <> @Id and Email like @email
于 2013-05-24T05:58:43.320 回答
0

尝试这个

var _user = Membership.GetUserNameByEmail(_emailid);

if(_user != null)
{
    //email already exits
    ModelState.AddModelError("", "Email id already exists.");
}
else
{
   //new email address
}
于 2013-05-24T06:53:16.587 回答