En iyi yanıtlayıcılar
MVC4 te Form Kayıtı yaparken NullReferenceException hatası alıyorum

Soru
-
merhabalar,
mvc ye yeni geçiş yapıyorum form kaydı yapmaya çalışıyorum ama hata alıyorum kodlarım aşağıdaki gibi nerede hata yapıyorum?
View
@{ Layout = null; } @model MVCNET.Models.Musteri <h2>FormDoldur</h2> <br/> @using (Html.BeginForm("Index", "Deneme", FormMethod.Post, null)) { <p>Kullanıcı Adı</p> @Html.TextBoxFor(a => a.KullaniciAdi) <p>Adınız</p> @Html.TextBoxFor(a => a.Ad) <p>Soyadınız</p> @Html.TextBoxFor(a => a.Soyad) <p>E-Mail Adresiniz</p> @Html.TextBoxFor(a => a.Email) <p>Şifreniz</p> @Html.TextBoxFor(a => a.Sifre) <input type="submit" value="Ekle" /> }
Controller
private MVCContext _DB; public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(Musteri m) { _DB.Musteris.Add(m); v.SaveChanges(); ModelState.Clear(); return View(); }
Yanıtlar
-
private MVCContext _DB = new MVCContext();
çok kötü bi giriş yapmışsın. v ne orda? o anlaşımıyor
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 12 Mayıs 2015 Salı 21:32
- Yanıt Olarak İşaretleyen yavuzata 13 Mayıs 2015 Çarşamba 07:03
Tüm Yanıtlar
-
merhabalar,
mvc ye yeni geçiş yapıyorum form kaydı yapmaya çalışıyorum ama hata alıyorum kodlarım aşağıdaki gibi nerede hata yapıyorum?
View
@{ Layout = null; } @model MVCNET.Models.Musteri <h2>FormDoldur</h2> <br/> @using (Html.BeginForm("Index", "Deneme", FormMethod.Post, null)) { <p>Kullanıcı Adı</p> @Html.TextBoxFor(a => a.KullaniciAdi) <p>Adınız</p> @Html.TextBoxFor(a => a.Ad) <p>Soyadınız</p> @Html.TextBoxFor(a => a.Soyad) <p>E-Mail Adresiniz</p> @Html.TextBoxFor(a => a.Email) <p>Şifreniz</p> @Html.TextBoxFor(a => a.Sifre) <input type="submit" value="Ekle" /> }
Controller
private MVCContext _DB; public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(Musteri m) { _DB.Musteris.Add(m); v.SaveChanges(); ModelState.Clear(); return View(); }
Hangi satırda ne hatası aldığını da yazsaydın iyiydi..Net Developer
-
private MVCContext _DB = new MVCContext();
çok kötü bi giriş yapmışsın. v ne orda? o anlaşımıyor
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 12 Mayıs 2015 Salı 21:32
- Yanıt Olarak İşaretleyen yavuzata 13 Mayıs 2015 Çarşamba 07:03
-
-
private MVCContext _DB = new MVCContext();
çok kötü bi giriş yapmışsın. v ne orda? o anlaşımıyor
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
nedemek istediğinizi anlamadım v derken ? -
-
v.SaveChanges();
satırındaki v
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]comsanırım kopyala yapıştır yaparken oldu o normalde model adı olan _DB olması gerekli
buarada sorun çözüldü dediğiniz gibi
private MVCContext _DB = new MVCContext();
yapınce düzeldi.
teşekkür ederim.
-
Müşteri modelinizin içerisinde ki alanlar
Örneğin şu şekilde tanımlayalım Müşteri modelini
public partial class Musteri
{
public int id { get; set; }
public string KullaniciAdi { get; set; }
public Nullable<string> Soyad { get; set; }
public string Sifre { get; set; }
}
Yukarıdaki tanımlamada KullanıcıAdi alanının null olamayacağını garanti etmiş olursunuz ama soyad alanı için null olabilir demiş olursunuz, bu durumda KullanıcıAdi null geldiğinde yani form alanınız daki değer doğru set edilmediğinde NullReferenceException hatası alırsınız aynı durum Soyad alanı için gerçekleşirse hata almadan çalışır.
null olabilecek değeri Controller->Method içerisinde
public ActionResult MyMethod(int ?id){
// ? işareti kullanarak da belirtebilirsiniz.
}
Başka bir noktayı atlamadım ise sorununuzun bu durum ile doğrudan ilşkili olduğunu düşünüyorum.
birde
_DB.Musteris.Add(m); v.SaveChanges();
_DB.SaveChanges() olmalı
- Düzenleyen rosliycs 13 Mayıs 2015 Çarşamba 07:08
-
v.SaveChanges();
satırındaki v
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]comsanırım kopyala yapıştır yaparken oldu o normalde model adı olan _DB olması gerekli
buarada sorun çözüldü dediğiniz gibi
private MVCContext _DB = new MVCContext();
yapınce düzeldi.
teşekkür ederim.
Aklında olsun, destructor ekleyip _DB yi dispose etmeyi unutma.
~HomeController() { _DB.Dispose(); }
Ayrıca kayıt işlerini şu şekilde yap;
public ActionResult Create(Musteri Model) { _DB.Entry(Model).State = EntityState.Added; _DB.SaveChanges(); return RedirectToAction("Index"); }
Edit iken;
[HttpPost] public ActionResult Edit(Musteri Model) { _DB.Entry(Model).State = EntityState.Modified; _DB.SaveChanges(); return RedirectToAction("Index"); }
Silerken;
public ActionResult Remove(int? Id) { _DB.Entry(_DB.Musteriler.Find(Id)).State = EntityState.Deleted; _DB.SaveChanges(); return RedirectToAction("Index"); }
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com