ASP.NET MVC3中远程验证的问题

postcha 2012-03-07 12:09:39
1:首先有个User模型,

/// <summary>
/// 用户的Email地址
/// </summary>
[Required(ErrorMessage = "Email必填")]
[Display(Name = "Email")]
[DataType(DataType.EmailAddress, ErrorMessage = "你的邮箱格式不对。\n正确的邮箱格式为'85167538@qq.com'")]
[Remote("CheckEmailExists", "Account", ErrorMessage = "此邮箱己存在")]
public string Email { get; set; }



2:验证的代码:

/// <summary>
/// 验证邮箱的唯一性
/// </summary>
/// <param name="email"></param>
/// <returns></returns>
public JsonResult CheckEmailExists(string email)
{
BlogEnt db = new BlogEnt();
var result = from e in db.Users
where e.Email == email.ToLower().Trim()
select e;
return Json(result.ToList().Count == 0, JsonRequestBehavior.AllowGet);
}

,,,,这样,就实现了远程验证,确保数据的唯一性。

因为我的前提是一旦用户注册了这个邮箱,那它以后就一直用这个邮箱不能再修改了。

所以现在碰到一个问题,在就是用户在修改用户资料时,还是会验证这个Email,报错”此邮箱己存在“。


修改用户资料的Controller:

public ActionResult EditUserInfo(int id)
{
User user = db.Users.Find(id);
if (user == null ||Convert.ToInt32(Session["userid"])!=id)
{
return RedirectToAction("Index");
}
else
{
ViewBag.skinid = db.Skins.OrderBy(a => a.SkinID).ToList();
return View(user);
}
}

[HttpPost]
public ActionResult EditUserInfo(User user )
{
try
{
var u = db.Users.Find(user.UserID);
UpdateModel(u);
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
ModelState.AddModelError("", "修改失败,请查看详细错误信息。");
}
return View(user);
}


前台View是用的强类型。

所以在修改用户资料这个action要怎么跳过这个验证方法?
...全文
627 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yz247 2013-06-27
  • 打赏
  • 举报
回复
个人认为修改下验证方法: CheckEmailExists(string email,int id) where e.Email == email.ToLower().Trim() and e.id!=id
yz247 2013-06-27
  • 打赏
  • 举报
回复
个人认为修改下验证方法: where e.Email == email.ToLower().Trim() and e.id!=email.id
xiaot8823 2013-01-07
  • 打赏
  • 举报
回复
高手,我也有类似问题,你解决了吗?
stszd604 2012-07-17
  • 打赏
  • 举报
回复
修改的时候 应该是反向验证 不存在的话 不能修改 呵呵
石头商人 2012-04-15
  • 打赏
  • 举报
回复
ModelState.Romove("email");
postcha 2012-03-20
  • 打赏
  • 举报
回复
有没有人解答一下啊
postcha 2012-03-08
  • 打赏
  • 举报
回复
请高手帮忙解决一下
postcha 2012-03-08
  • 打赏
  • 举报
回复
model中,这些要的,因为在注册时要使用的。
MSDNXGH 2012-03-08
  • 打赏
  • 举报
回复
不要那些附加属性就行了
postcha 2012-03-07
  • 打赏
  • 举报
回复
不显示也没有用啊。不显示的话直接报catch中的错误了。

如果显示或藏的话是报“此邮箱己存在”

骑猪看海 2012-03-07
  • 打赏
  • 举报
回复
不能修改那EDIT时就不显示这个字段
postcha 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ldc121xy716 的回复:]

给个标志处理吧
public JsonResult CheckEmailExists(string email ,int state) //state=1为增加 2为修改
{
if(state==1){
BlogEnt db = new BlogEnt();
var result = from e ……
[/Quote]

能帮忙写完整一点么?新手,有难度啊。
chen_ya_ping 2012-03-07
  • 打赏
  • 举报
回复
要不然还是手写验证吧。不需要用这样子的验证了。
大雷神 2012-03-07
  • 打赏
  • 举报
回复
给个标志处理吧
public JsonResult CheckEmailExists(string email ,int state) //state=1为增加 2为修改
{
if(state==1){
BlogEnt db = new BlogEnt();
var result = from e in db.Users
where e.Email == email.ToLower().Trim()
select e;

return Json(result.ToList().Count == 0, JsonRequestBehavior.AllowGet);
}
}

62,204

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧