• 27-01-2019, 14:42:58
    #1
    Arkadaşlar bir yardımınıza ihtiyacım var,
    Aşağıda kullanıcı bilgilerini update etmeye çalışıyorum. Kullanıcı bilgilerini güncelliyebilmesi için şifresini de yazmak zorunda.

    Fakat boş geçtiğinde var _user değişkeninde patlıyorum (şifre boş geldiği için)
    Nasıl bir değişiklik yapmayalım acaba, yardımcı olabilirseniz sevinirim.

     public ActionResult Index(User user)
            {
                ViewData["CatList"] = _categoryService.listcek();
                string _pass = user.Password;
                
                   var _user = _userService.Find(x => x.Email == user.Email && x.Password == Crypto.Hash(_pass, "MD5")
                   && x.ConfirmPassword == Crypto.Hash(_pass, "MD5"));
               
               
                if (ModelState.IsValid)
                {
                    
                    if (_user != null)
                    {
                        _user.Password = Crypto.Hash(_pass, "MD5");
                        _user.ConfirmPassword = Crypto.Hash(_pass, "MD5");
                        _user.Name = user.Name;
                        _user.SurName = user.SurName;
                        _user.Email = user.Email;
                        _user.Tel = user.Tel;
                        _user.Birthday = user.Birthday;
                        _user.Gender = user.Gender;
                        _user.IsActive = true;
                        _user.Newslatter = false;
                        _userService.Update(_user);
                        TempData["Status"] = "ok";
                    }
                    else
                    {
                        TempData["Status"] = "no";
                    }
                }
                else
                {
                    TempData["Status"] = "no";
                }
    
                return View(_user);
            }
  • 27-01-2019, 14:51:19
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    var _user = _userService.Find(x => x.Email == user.Email && x.Password == Crypto.Hash(_pass, "MD5")
    && x.ConfirmPassword == Crypto.Hash(_pass, "MD5"));

    burda zaten password kontrolü ettiriyorsun. password nasıl boş geliyor ? demekki listede o kullanıcının şifresi boş ?
    ayrıca eğer kullanıcı şifresini update etmeye çalışırsa bu kod çalışmayacak (veya epostasını)



    bir not daha ekleme

    var _user = _userService.Find(x => x.Email == user.Email && x.Password == Crypto.Hash(_pass, "MD5")
    && x.ConfirmPassword == Crypto.Hash(_pass, "MD5"));


    find yerine Any yazarsan (bool döndürür) listede hiç olup olmadığını kontrol edersin (_user != null'dan daha iyi olabilir senin için)
  • 27-01-2019, 15:00:46
    #3
    Üyeliği durduruldu
    Find yerine SingleOrDefault kullanın. Böylece Eğer user bulunamazsa null dönecek, exception durumu olmayacaktır.
  • 27-01-2019, 16:58:49
    #4
    SLKing adlı üyeden alıntı: mesajı görüntüle
    var _user = _userService.Find(x => x.Email == user.Email && x.Password == Crypto.Hash(_pass, "MD5")
    && x.ConfirmPassword == Crypto.Hash(_pass, "MD5"));

    burda zaten password kontrolü ettiriyorsun. password nasıl boş geliyor ? demekki listede o kullanıcının şifresi boş ?
    ayrıca eğer kullanıcı şifresini update etmeye çalışırsa bu kod çalışmayacak (veya epostasını)




    bir not daha ekleme

    var _user = _userService.Find(x => x.Email == user.Email && x.Password == Crypto.Hash(_pass, "MD5")
    && x.ConfirmPassword == Crypto.Hash(_pass, "MD5"));


    find yerine Any yazarsan (bool döndürür) listede hiç olup olmadığını kontrol edersin (_user != null'dan daha iyi olabilir senin için)
    konuda belirttiğim gibi kullanıcı şifresini boş girip post edince var _user'da patlıyorum. Any yazarsam da view'a gördüğünüz gibi _user'ı gönderiyorum. gönderemem model olarak.
  • 27-01-2019, 19:56:28
    #5
    modestate invalid mi diye kontrol ettiriyorsun zaten. o patlayan kodu neden o blockun icine almiyorsun.
  • 28-01-2019, 16:31:15
    #6
    Some adlı üyeden alıntı: mesajı görüntüle
    modestate invalid mi diye kontrol ettiriyorsun zaten. o patlayan kodu neden o blockun icine almiyorsun.
    bloğun içerisine alırsam, view' gönderemem.
  • 28-01-2019, 20:32:24
    #7
    gonderirsin neden gondermeyesin.
    return View(_user);

    bunun yerine
    return View(user);
    gonderirsin.



    public ActionResult Index(User user)
    {


    if (ModelState.IsValid)
    {
    ViewData["CatList"] = _categoryService.listcek();
    string _pass = user.Password;

    var _user = _userService.Find(x => x.Email == user.Email && x.Password == Crypto.Hash(_pass, "MD5")
    && x.ConfirmPassword == Crypto.Hash(_pass, "MD5"));

    if (_user != null)
    {
    _user.Password = Crypto.Hash(_pass, "MD5");
    _user.ConfirmPassword = Crypto.Hash(_pass, "MD5");
    _user.Name = user.Name;
    _user.SurName = user.SurName;
    _user.Email = user.Email;
    _user.Tel = user.Tel;
    _user.Birthday = user.Birthday;
    _user.Gender = user.Gender;
    _user.IsActive = true;
    _user.Newslatter = false;
    _userService.Update(_user);
    TempData["Status"] = "ok";
    }
    else
    {
    TempData["Status"] = "no";
    }
    }
    else
    {
    TempData["Status"] = "no";
    return View(user);

    }

    return View(_user);
    }