MVC [Remote]验证用户名是否存在,并在用户修改用户名时判断

mvc验证属性 [Remote] 验证用户名后,再用户需要修改用户名的时候也要验证是否存在,但是只当修改后的用户名不为当前用户名才应该提示。

control代码为:

  public JsonResult ExitesUserName()
        {

            string uname = Request.Params["uname"];
            var user = db.User_tb.Where(x => x.uname == uname).FirstOrDefault();
            return user == null ? Json(true, JsonRequestBehavior.AllowGet) : Json("用户名已存在", JsonRequestBehavior.AllowGet);

   
        }

但是如果这样写的话,如果后期有修改用户信息的需求,就会很麻烦,因为用户可能只想修改其他信息而不想修改用户名,此时这个用户名就会一直提示存在,用户还必须要修改??

所以就需要判断当前用户是注册还是修改,我在这里用到的方法是判断 当前页面是否存在此用户的  “id” 如果有则是修改信息且修改后的用户名不存在则不提示,

    public ActionResult UserInfo(int id)
        {
            this.TempData["id"] = id.ToString();
            var usermodel = db.User_tb.FirstOrDefault(x=>x.id==id);
            return View(usermodel);
        }
        public ActionResult UpdateUserName(User_tb model)
        {
            
            var uid = db.User_tb.FirstOrDefault(x=>x.id==model.id);
            if (uid==null)
            {
                return Content("用户不存在");
            }
            var usermodel = db.User_tb.FirstOrDefault(x=>x.id==model.id);
            usermodel.uname = model.uname;
            usermodel.email = model.email;


            db.Entry<User_tb>(usermodel).State = System.Data.EntityState.Modified;

            db.Configuration.ValidateOnSaveEnabled = false;//关闭实体验证有效性
            db.SaveChanges();
            return RedirectToAction("Index");
        }   

//[HttpGet]
        public JsonResult ExitesUserName()
        {

          
               string id = this.TempData["id"] as string;//这里的TempData["id"]是UserInfo中定义的,而且使用[HttpGet]后,这个值获取不到,难道[HttpGet]禁止TempData????
            string userName = Request.Params["uname"];
            if (string.IsNullOrWhiteSpace(id))//注册页面没有用户id
            {

                var user = db.User_tb.Where(x => x.uname == userName).FirstOrDefault();
                return user == null ? Json(true, JsonRequestBehavior.AllowGet) : Json("用户名已存在", JsonRequestBehavior.AllowGet);
            }
            else//修改
            {
                if (db.User_tb.Find(int.Parse(id)).uname == userName)//若当前修改的用户名与原先一致,不提示
                {
                    return Json(true, JsonRequestBehavior.AllowGet);
                }
                else//否则提示修改后的用户名已存在
                {
                    return Json(false, JsonRequestBehavior.AllowGet);
                }

            }
           
            
        }

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值