2016-04-05 49 views
0

爲什麼我會收到以下錯誤:獲取未設置爲對象實例的對象引用

未將對象引用設置爲對象的實例。

我知道這是因爲它告訴我'它不能將它保存爲「空」但它有一個值,或者我做錯了嗎?我已經嘗試了不同的方式,而沒有看到我應該怎麼做?

型號:

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; } 
    } 

的Controler:

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"); 
     } 

查看:

<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

@ S.Akbari我知道爲什麼,我發現了錯誤。我只是無法修復它,這種淺淺的作品。 – unscope

+2

您沒有使用'name ='Month''和'name =「Date」'的任何表單控件(表單根據'name'屬性發布名稱/值對)。如果添加了名稱屬性,請刪除無意義的「Request.Form」訪問 - 模型將已經與值綁定。最後進入MVC網站,學習使用強類型HtmlHelpers創建視圖的基礎知識。 –

+0

@StephenMuecke這是我的錯誤,我把它作爲一個名字的ID instad!非常感謝! – unscope

回答

0

你真的需要編寫defens結構延續。而不僅僅是「快樂的道路」。

拋出一些有意義的異常

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

我沒有看到你和我的代碼有一個很大的差異,期望你有升級驗證。正如我所說,我發送了一個值,所以它不應該是空的。 – unscope

+0

@unscope,發生了一些你並不期望的事情。如果所有事情都按照您的預期工作,那麼您不會遇到錯誤。所以granadaCoder說,最好不要假設。如果你驗證了假設,你會少掙些。另外,由於沒有完整的錯誤信息和/或問題的具體細節,我們必須猜測具體問題是什麼。 – user34660

+0

@ user34660問題是我有一個名字的ID instad! – unscope

相關問題