asp.net中更新表单上的唯一电子邮件地址

时间:2013-05-24 05:33:57

标签: c# asp.net asp.net-mvc

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

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

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

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

请建议

3 个答案:

答案 0 :(得分:1)

将操作用作JsonAction并签入操作并将状态返回到此。

答案 1 :(得分:1)

你的意思是你需要一个验证属性? RemoteValidation会对你有用。

但是如果您只想对这两个操作执行一个请求,那么您将不得不仅使用服务器验证来进行此唯一检查。你可以写一个custom validator(网上有很多例子),或者你可以欺骗并做类似的事情

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

答案 2 :(得分:0)

试试这个

var _user = Membership.GetUserNameByEmail(_emailid);

if(_user != null)
{
    //email already exits
    ModelState.AddModelError("", "Email id already exists.");
}
else
{
   //new email address
}