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);
                }

            }
           
            
        }

 

展开阅读全文

没有更多推荐了,返回首页