2016-04-05 23 views
0

Neden şu hatayı alıyorum:Bir nesne başvurusu alma Bir nesnenin örneğine ayarlanmadı

Nesne başvurusu bir nesnenin örneğine ayarlanmadı.

Bunun bir "null" olarak kaydedilemediğini, ancak bunun bir değeri olduğunu ya da yanlış mı yaptığımı söyleyeceğini biliyorum. Nasıl yapmam gerektiğini görmeden farklı yollar denedim mi?

Modeli:

public class BookTime 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Email { get; set; } 
     public string Phone { get; set; } 
     public int Zip { get; set; } 
     public string City { get; set; } 
     public string Address { get; set; } 
     public string Month { get; set; } 
     public string Date { get; set; } 
    } 

Denetleyici:

public ActionResult _BookTime(BookTime Booktime) 
     { 
      db.BookTimes.Add(Booktime); 

      Booktime.Month = Request.Form["Month"].ToString(); 
      Booktime.Date = Request.Form["Date"].ToString(); 


      db.SaveChanges(); 
    return Redirect("Index"); 
     } 

Görünüm:

<div class="col-sm-6"> 
      <b>Månede</b> 
      <select class="form-control" id="Month" required> 
       <option value="0">Vælg Dag</option> 
       <option value="Januar">Januar</option> 
       <option value="Febuar">Febuar</option> 
       <option value="Marts">Marts</option> 
       <option value="April">April</option> 
       <option value="Maj">Maj</option> 
      </select> 
     </div> 
     <div class="col-sm-6"> 
      <b>Dag</b> 
      <select class="form-control" id="Date" required> 
       <option value="0">Vælg Dato</option> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       <option value="3">3</option> 
       <option value="4">4</option> 
       <option value="5">5</option> 
      </select> 
     </div> 
+0

atın. Sadece tamir edemem, bu işe yaramaz. – unscope

+2

'name =" Month "' ve 'name =" Date "' ile herhangi bir form kontrolünüz yoktur ('name' özniteliğine dayanarak bir form geri ad/değer çiftleri gönderir). Ve eğer isim niteliklerini eklerseniz, anlamsız 'Request.Form' erişimini kaldırın - model zaten değerlerle bağlı olacaktır. Son olarak MVC sitesine gidin ve güçlü bir şekilde yazılmış HtmlHelpers kullanarak bir görünüm oluşturmanın temellerini öğrenin. –

+0

@StephenMuecke Bu benim hatamın adının bir id ismini yerleştirdiğim hatasıydı! Çok teşekkürler! – unscope

cevap

0

Gerçekten Defens kod gerek yanıtını verdiler. Ve sadece "mutlu yol" değil.

bazı anlamlı istisnalar i hata alıyorum neden biliyorum S.Akbari @

public ActionResult _BookTime(BookTime bt) 
     { 


      if(null != bt) 
      { 
       if(null!=Request.Form["Month"]) 
       { 
        bt.Month = Request.Form["Month"].ToString(); 
       } 
       else 
       { 
        throw new NullReferenceException("Month was null"); 
       }     
       if(null!=Request.Form["Date"]) 
       { 
        /* if bt.Date is a date..what are you doing to make sure the form value is a date?? */ 
        bt.Date = Request.Form["Date"].ToString(); 
       } 
       else 
       { 
        throw new NullReferenceException("Date was null"); 
       }    
      } 
      else 
      { 
       throw new NullReferenceException("bt was null"); 
      } 

      if(null!=db) 
      { 
      db.BookTimes.Add(bt); 
      db.SaveChanges(); 
      } 
      else 
      { 
       throw new NullReferenceException("Db was null"); 
      } 
      return Redirect("Index"); 
     } 
+0

Sizin ve kodumda büyük bir fark olduğunu görmüyorum, doğrulamadan vazgeçmenizi bekliyoruz. Ve dediğim gibi, bir değer ile gönderiyorum, bu yüzden – unscope

+0

@ unscope olmamalı, beklemediğiniz bir şey oluyor. Her şey beklediğiniz gibi çalışıyorsa, o zaman bir hata almayacaksınız. Yani granadaCoder, üstlenilmemenin en iyisi olduğunu söylüyor. Varsayımları doğrularsanız daha az mücadele edeceksiniz. Ayrıca, sorunun tam bir hata mesajı ve/veya belirtisi olmadığından, belirli sorunun ne olduğunu tahmin etmeliyiz. – user34660

+0

@ user34660 Sorun şu ki, bir isimde bir isim vardı! – unscope

İlgili konular