Asp.Net Mvc' De İşlem Başarılı Mesajı Göstermek
-
Selam arkadaşlar,
Asp.Net Mvc'ye Web Forms' dan yeni geçtim.
Benim yapmak istediğim Web Forms mantığında son derece basit. Eminim Mvc' de de son derece basittir fakat ben bir türlü bulamadım.
Durumu kısaca açıklamak gerekirse;
Basit bir form ekranım var veritabanına Entity Framework ile kayıt giriyorum. Sayfam açıldığında formun üst kısmında klasik mavi background div ile "Boş alan bırakmayınız" gibi bir metin yer alıyor. Bunu da ViewBag yardımı ile yapıyorum. Sayfamda ise Html.Raw(ViewBag.Alert) şeklinde gösteriyorum.
Açılan View' i Gösteren Action:
public ActionResult Education() { ViewBag.Alert = AdminAlerts.Info(); return View(); }Kayıt işlemi başarılı bir şekilde gerçekleştiğinde "İşlem başarılı" yazan div' im gösterilsin istiyorum.
Kayıt Yapan Kod:
[HttpPost] public ActionResult InsertEducation(FormCollection Fc) { try { Education Edu = new Education(); Edu.Department = Fc["txtBolumAdi"]; Edu.Description = Fc["txtAciklama"]; Edu.EndDate = Fc["txtBitis"]; Edu.StartDate = Fc["txtBaslangic"]; Edu.School = Fc["txtUniversite"]; Entity.Education.Add(Edu); if (Entity.SaveChanges() > 0) ViewBag.Alert = AdminAlerts.Success(); else ViewBag.Alert = AdminAlerts.Error(); } catch (Exception Ex) { ViewBag.Alert = AdminAlerts.Error("Hata oluştu: " + Ex.Message); } return RedirectToAction("Education"); }Bu şekilde olduğunda "Education" Action' ı çalıştığı için sayfada yine "Boş alan bırakmayınız" uyarısı geliyor.
return RedirectToAction("Education") yerine return View() yazarsam bu seferde InsertEducation View' i bulunamadı diyor.
Şimdiden yardımlarınız için teşekkür ederim.
Diathorus tarafından 16/Tem/15 17:52 tarihinde düzenlenmiştir -
Education action'ına isSuccess diye bir parametre daha ekle bunu kontrol ettirip ona göre divleri gösterebilirsin.
-
Lightsaber bunu yazdı
Education action'ına isSuccess diye bir parametre daha ekle bunu kontrol ettirip ona göre divleri gösterebilirsin.
Dostum şu şekilde yaptım olmadı.
InsertEducation Action' ına ViewBag.IsSuccess = true; ekledim.
Education Action' ında ise şöyle yaptım:
if (ViewBag.IsSuccess == null) ViewBag.Alert = AdminAlerts.Info();
Diathorus tarafından 16/Tem/15 18:14 tarihinde düzenlenmiştir -
Diathorus bunu yazdıLightsaber bunu yazdı
Education action'ına isSuccess diye bir parametre daha ekle bunu kontrol ettirip ona göre divleri gösterebilirsin.
Dostum şu şekilde yaptım olmadı.
InsertEducation Action' ına ViewBag.IsSuccess = true; ekledim.
Education Action' ında ise şöyle yaptım:
if (ViewBag.IsSuccess == null) ViewBag.Alert = AdminAlerts.Info();
null yerine false dener misin hocam
-
Lightsaber bunu yazdı
null yerine false dener misin hocam
Dostum False olarak denediğimde ekranda hiç bir şey göstermiyor.
-
hocam senin sorun viewbag kullanmandan. return View yerine RedirectToAction yaptığında ViewBag değil TempData kullanmalısın.
http://stackoverflow.com/questions/14497711/set-viewbag-before-redirect
-
InsertEducation isimli fonksiyonunun geri dönüş değerini Jsonresult yap hocam.
try içinde
var gidileceksayfa = new UrlHelper(Request.RequestContext).Action("method adi", "controller adi");
return Json(new { url = gidileceksayfa,mesajvarmi = 0 , mesaj = "işlem basarili vs vs s.."});
diyebilirsin client a ajax isteği gönderebilirsin.
Sonra html kısmında ajax ın success kısmına
success: function (a) { if(a.mesajvarmi == 1) { // burda mesajını gosterebılrısı } if(a.mesajvarmi == 0) { window.location.href = a.url; } }falan yazıp mesajını gösterebilirsin.Tam anlatamadım ancak çözüm bulamazsan çok ayrıntılı anlatabilirim.Yani olayı json lada çözebilirsin.
EDİT : demek viewbag action bazlı çalışıyo.@Lightsaber hocam doğru mu anladım.
Hannibal_King tarafından 16/Tem/15 19:16 tarihinde düzenlenmiştir -
Hannibal_King bunu yazdı
InsertEducation isimli fonksiyonunun geri dönüş değerini Jsonresult yap hocam.
try içinde
var gidileceksayfa = new UrlHelper(Request.RequestContext).Action("method adi", "controller adi");
return Json(new { url = gidileceksayfa,mesajvarmi = 0 , mesaj = "işlem basarili vs vs s.."});
diyebilirsin client a ajax isteği gönderebilirsin.
Sonra html kısmında ajax ın success kısmına
success: function (a) { if(a.mesajvarmi == 1) { // burda mesajını gosterebılrısı } if(a.mesajvarmi == 0) { window.location.href = a.url; } }falan yazıp mesajını gösterebilirsin.Tam anlatamadım ancak çözüm bulamazsan çok ayrıntılı anlatabilirim.Yani olayı json lada çözebilirsin.
EDİT : demek viewbag action bazlı çalışıyo.@Lightsaber hocam doğru mu anladım.
evet hocam öyleymiş, daha doğrusu viewbag adı gibi view'a taşımak için actionlar arası veri taşımak için tempdata kullanılıyor.
-
Hannibal_King bunu yazdı
InsertEducation isimli fonksiyonunun geri dönüş değerini Jsonresult yap hocam.
try içinde
var gidileceksayfa = new UrlHelper(Request.RequestContext).Action("method adi", "controller adi");
return Json(new { url = gidileceksayfa,mesajvarmi = 0 , mesaj = "işlem basarili vs vs s.."});
diyebilirsin client a ajax isteği gönderebilirsin.
Sonra html kısmında ajax ın success kısmına
success: function (a) { if(a.mesajvarmi == 1) { // burda mesajını gosterebılrısı } if(a.mesajvarmi == 0) { window.location.href = a.url; } }falan yazıp mesajını gösterebilirsin.Tam anlatamadım ancak çözüm bulamazsan çok ayrıntılı anlatabilirim.Yani olayı json lada çözebilirsin.
EDİT : demek viewbag action bazlı çalışıyo.@Lightsaber hocam doğru mu anladım.
Dostum WebForms' da <asp:Literal ile 1 dakika içinde yapabileceğim bir şeyi Mvc de yapmak için binbir takla atıyor olmak bana garip geliyor :D
-
Lightsaber bunu yazdı
hocam senin sorun viewbag kullanmandan. return View yerine RedirectToAction yaptığında ViewBag değil TempData kullanmalısın.
http://stackoverflow.com/questions/14497711/set-viewbag-before-redirect
Dostum teşekkür ederim ilgin için TempData ile problem çözüldü. Ellerine sağlık.
