none
MVC 4 id'ye göre veri çekmek RRS feed

  • Soru

  • Merhaba,

    mvc 4'da id ye göre veri nasıl çekebilirim ? örneğin kullanıcı profiline girdi bilgilerini güncellicek,

    örneğin profilinde ad soyad kısımlarını güncellicek

    kullanıcı sayfayı açtığında ad soyad kısmı değiştirmeden önceki kısmı textboxlara yerleşicek sonra kullanıcak istediği gibi değiştirip güncellicek nasıl yapabilirim ?

    21 Eylül 2014 Pazar 15:23

Yanıtlar

  • Kullanıcının login olma işlemi yapmışsın sanırım. Mantık aynı Controller classının içinde bir fonskyionun olucak.

    public ActionResult User(int id)
    {
       // burada da artık nasıl bir yapı kullanıyorsan ona göre datayı alıp geri göndericeksin.
         XDbContext db = new XDbContext();
         return View(db.Users.Where(p => p.Id == id).FirstOrDefault());
    
    }

    View kısmını falan ayarlayabileceğini düşünüyorum. Bi öneri olarak eğer yeni başlamışsan burada devam et.


    • Düzenleyen Berdann 21 Eylül 2014 Pazar 16:30
    • Yanıt Olarak İşaretleyen Serkan Canseven 26 Eylül 2014 Cuma 09:03
    21 Eylül 2014 Pazar 16:30

Tüm Yanıtlar

  • Kullanıcının login olma işlemi yapmışsın sanırım. Mantık aynı Controller classının içinde bir fonskyionun olucak.

    public ActionResult User(int id)
    {
       // burada da artık nasıl bir yapı kullanıyorsan ona göre datayı alıp geri göndericeksin.
         XDbContext db = new XDbContext();
         return View(db.Users.Where(p => p.Id == id).FirstOrDefault());
    
    }

    View kısmını falan ayarlayabileceğini düşünüyorum. Bi öneri olarak eğer yeni başlamışsan burada devam et.


    • Düzenleyen Berdann 21 Eylül 2014 Pazar 16:30
    • Yanıt Olarak İşaretleyen Serkan Canseven 26 Eylül 2014 Cuma 09:03
    21 Eylül 2014 Pazar 16:30
  • Kullanıcının login olma işlemi yapmışsın sanırım. Mantık aynı Controller classının içinde bir fonskyionun olucak.

    public ActionResult User(int id)
    {
       // burada da artık nasıl bir yapı kullanıyorsan ona göre datayı alıp geri göndericeksin.
         XDbContext db = new XDbContext();
         return View(db.Users.Where(p => p.Id == id).FirstOrDefault());
    
    }

    View kısmını falan ayarlayabileceğini düşünüyorum. Bi öneri olarak eğer yeni başlamışsan burada devam et.


    ingilizce kaynaklarda zorlanıyorum türkçe yokmu acaba :) ?
    21 Eylül 2014 Pazar 16:33
  • Türkçe olarak burası var bildiğim birde Önay hocanın sitesi var.
    21 Eylül 2014 Pazar 16:42
  • Türkçe olarak burası var bildiğim birde Önay hocanın sitesi var.

    bu arada yapamadım, :S

    şimdi Account/Manage içinde şifre değiştirme var biliyorsunuz,

    ben ek olarak UserProfiles Table içine Email alanı ekledim,

    Account/Manage Sayfası içerisine Email alanı ekleyip Textbox içerisinede kullanıcının email aderesini yazdırmak

    istiyorum ama yapamadım.

    21 Eylül 2014 Pazar 16:53
  • Bakın söylediğim gibi olaya çok yanlış şekilde başlamışsınız direk cevap istiyorsunuz. Bunun faydası yok ama buyrun cevap:

    XController.cs

    //İlk önce bilgileri görmesi için buraya giricek.
    public ActionResult Edit(int? id)
            {
                XDbContext db = new XDbContext();
                return View(db.Users.Find(id));
            }
    
    [HttpPost]
    [ValidateInput(false)]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(User model)
            {
                if (ModelState.IsValid)
                {
                    XDbContext db = new XDbContext();
                    db.Entry(model).State = System.Data.EntityState.Modified;
                    db.SaveChanges();
                }
                return RedirectToAction("Index");
            }

    Edit.cshtml

    @using X.Models;
    @model User
    
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        <div>
            @Html.LabelFor(p => p.Adi, "Adı:")
            <br />
            @Html.TextBoxFor(p => p.Adi)
            *
        </div>
        <div>
            @Html.LabelFor(p => p.Email, "Email")
            <br />
            @Html.TextAreaFor(p => p.Email)
        </div>
        <div>
            <input type="submit" name="Submit" value="Kaydet" class="button" />
        </div>
    }

    Söylediğim gibi şuanda bu yaptığınız gecici çözüm. Olayı başından başlayıp anlayarak neyi niçin yaptığınızı bilerek gitmek daha mantıklı.

    21 Eylül 2014 Pazar 17:06
  • Bakın söylediğim gibi olaya çok yanlış şekilde başlamışsınız direk cevap istiyorsunuz. Bunun faydası yok ama buyrun cevap:

    XController.cs

    //İlk önce bilgileri görmesi için buraya giricek.
    public ActionResult Edit(int? id)
            {
                XDbContext db = new XDbContext();
                return View(db.Users.Find(id));
            }
    
    [HttpPost]
    [ValidateInput(false)]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(User model)
            {
                if (ModelState.IsValid)
                {
                    XDbContext db = new XDbContext();
                    db.Entry(model).State = System.Data.EntityState.Modified;
                    db.SaveChanges();
                }
                return RedirectToAction("Index");
            }

    Edit.cshtml

    @using X.Models;
    @model User
    
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        <div>
            @Html.LabelFor(p => p.Adi, "Adı:")
            <br />
            @Html.TextBoxFor(p => p.Adi)
            *
        </div>
        <div>
            @Html.LabelFor(p => p.Email, "Email")
            <br />
            @Html.TextAreaFor(p => p.Email)
        </div>
        <div>
            <input type="submit" name="Submit" value="Kaydet" class="button" />
        </div>
    }

    Söylediğim gibi şuanda bu yaptığınız gecici çözüm. Olayı başından başlayıp anlayarak neyi niçin yaptığınızı bilerek gitmek daha mantıklı.

    Peki şöyle bişi yapabilirmiyiz 

    mesela kullanıcı profiline girdi editlicek ad alanına önceden belirlediği ismini getirebilirmiyim ? yani kayıt esnasında ad alanına örneğin ahmet yada mehmet girdi kullanıcı profiline girdiğinde otomotik olarak adı alanına mehmet gelsin ?

    23 Eylül 2014 Salı 15:15
  • Bakın siz bu işin mantığını anlamamışsınız. Benim yazdığım kodlara bakma gereği bile duymamışsınız. Orada int? id tipinde alan alıyor. Sen burada istediğin id yi gönder string yap ad gönder ne farkedicek?

    Veriyi alırken id ye göre değil ada göre çekiceksin. Ne kadar mantıklı olur orası ayrı.

    23 Eylül 2014 Salı 17:53
  • Bakın siz bu işin mantığını anlamamışsınız. Benim yazdığım kodlara bakma gereği bile duymamışsınız. Orada int? id tipinde alan alıyor. Sen burada istediğin id yi gönder string yap ad gönder ne farkedicek?

    Veriyi alırken id ye göre değil ada göre çekiceksin. Ne kadar mantıklı olur orası ayrı.

    iyi de id ye göre çekmezsem veri tabanındaki bütün ad alanları gelmez mi ? ben userid'si şu olanın ismini almak istiyorum mesela ?
    23 Eylül 2014 Salı 18:05
  • Benim yukarda yazdığım şeyi hiç anlamayı düşündün mü ya da çabaladın mı? 

     return View(db.Users.Find(id));

    Burada ki alan x id li kullanıcının Users tablosunda ki bilgilerini getirir. Yani orada adı soyadı ne bilgisi varsa onu getirir. 

    Sen sadece adını getirmek istiyorsan

    db.Users.Find(id).Select(p => p.Name);

    dersin. 

    23 Eylül 2014 Salı 18:52
  • Benim yukarda yazdığım şeyi hiç anlamayı düşündün mü ya da çabaladın mı? 

     return View(db.Users.Find(id));

    Burada ki alan x id li kullanıcının Users tablosunda ki bilgilerini getirir. Yani orada adı soyadı ne bilgisi varsa onu getirir. 

    Sen sadece adını getirmek istiyorsan

    db.Users.Find(id).Select(p => p.Name);

    dersin. 

     tamam zaten benim istediğim de bu benim anlatmaya çalıştığım şey şu profil.cshtml içerisinde hane kullanıcı profilini güncellicek ya 

    @Html.EditorFor(m => m.Ad, new { @class = "form-control" })

    benim anlatmaya çalıştığım şey bu inputun içine kullanıcının adı neyse ahmet veya mehmet nasıl getirtebilirm ? yani @Html.EditorFor(m => m.Ad, new { @class = "form-control", @value = "Ahmet" })

    bunu nasıl yapabilirim diye soruyorum sadece kodunu bilmiyorum :))

    ayrıca editorfor'a class veremiyorum kendi başka bi class atıyor "text-box single-line" böyle bi class veriyor
    • Düzenleyen ByAvora 23 Eylül 2014 Salı 19:56
    23 Eylül 2014 Salı 19:47