En iyi yanıtlayıcılar
MVC 4 id'ye göre veri çekmek

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 ?
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
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
-
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.
-
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.
-
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ı.
-
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 ?
-
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ı.
-
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ı.
-
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.
-
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