2013-02-15 41 views
0

我有以下代碼:連接到MySQL,CSHTML

@{ 

    Layout = "~/_SiteLayout.cshtml"; 
    Page.Title = "About"; 
    if(Request["id"].IsEmpty()){ 
    Write("something"); 
} else { 
    DataSet ds = new DataSet(); 
    var Id = Request.QueryString["id"].ToString(); 
    var db = Database.Open("SmallBakery"); 
    var selectQueryString = String.Format("SELECT * FROM Products where Id={0}", Id); 
} 


} 

<!DOCTYPE html> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
    </head> 
    <body> 
      <table> 

      <tr> 

       <th>Product</th> 

      </tr> 
     @if (ds.Tables[0].Rows.Count >0){ 

      <tr> 
       <td>@row.Id</td> 
       <td>@row.Name</td> 


      </tr> 

      } 
    </table> 
    </body> 
</html> 

這裏的問題,我在此行中得到一個錯誤:「@如果(ds.Tables [0] .Rows.Count> 0) 「

我的問題是爲什麼以及如何修復它(我剛開始學習這個,它對我來說是新的...) 謝謝。

+0

什麼錯誤,你得到?彈出的兩個問題是,你顯然沒有引用任何與數據庫一起工作的程序集,並且你在那行中將'db'重命名爲'ds'(可能)。你能否更具體地說明你想要達到的目標?你打算怎麼做? – csima 2013-02-15 08:26:16

+0

什麼是錯誤? – 2013-02-15 08:26:18

+0

嗨,你的發球者。我想只看到表中的值,其中的id是ID INT的URL(http://example.com/ViewDish.cshtml?id=1) 我想這個ID,並選擇所有的值從這個Id的表中,但我得到這個錯誤「CS0103:名稱'DS'不存在於當前的上下文中」爲什麼? – 2013-02-15 09:09:03

回答

0

原因之一,我沒有看到ds聲明,任何地點設置,讓你確信它的存在?你確定你分配給它嗎?另外還有一個NullReferenceException這裏潛在即使dsDataSet並已分配到,因爲沒有檢查,看看是否有至少一個表,你嘗試的第一個索引在訪問一個之前。

所以,在這方面(和你可以自由添加任何特定情景邏輯)徹底的,你可以這樣做:

@if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { 
+0

嗨,你雁thnks,但它並沒有工作....我想看到的只是其中ID是ID INT的地址表中的值(example.com/ViewDish.cshtml?id= 1)我想要得到這個ID並從這個ID中選擇表中的所有值,但是我得到這個錯誤「CS0103:名稱'ds'在當前上下文中不存在」爲什麼? – 2013-02-15 09:09:30

+0

然後,正如我第一次指出的那樣,ds不是作爲一個東西存在的。事實上,在發佈的腳本中沒有任何命名爲ds的東西,您只需打開該數據庫,不要執行任何操作來獲取結果數據集。 – 2013-02-15 09:13:30

+1

只有現在我看到你已經添加了數據集變量'ds'到你的代碼中。它之前沒有,而且你還沒有做出任何有用的事情(只是一個沒有表格的空數據集)。 – 2013-02-15 09:13:50

0

DS並不總是宣稱永不初始化。見你最初的陳述:

@{ 
    Layout = "~/_SiteLayout.cshtml"; 
    Page.Title = "About"; 
    if(Request["id"].IsEmpty()) { 
     Write("something"); 
    } else { 
     DataSet ds = new DataSet(); 
     var Id = Request.QueryString["id"].ToString(); 
     var db = Database.Open("SmallBakery"); 
     var selectQueryString = String.Format("SELECT * FROM Products where Id={0}", Id); 
    } 

}

首先,如果沒有查詢字符串的ID,DS是不是在所有的聲明。這將是一個錯誤。 然後,如果有一個id,ds被聲明爲一個新的數據集,但沒有給出一個值(除了一個空數據集)。這是另一個可能的錯誤。

你可以構建這樣說:

@{ 
    Layout = "~/_SiteLayout.cshtml"; 
    Page.Title = "About"; 
    if(Request["id"].IsEmpty()) { 
     Write("something"); 
    } else { 
     DataSet ds = new DataSet(); 
     var Id = Request.QueryString["id"].ToString(); 
     var db = Database.Open("SmallBakery"); 
     var selectQueryString = String.Format("SELECT * FROM Products where Id={0}", Id); 
     ds = ... **** Use the query here to fill the ds with the required data **** 

     **** put the HTML here - this HTML code is not needed 
      in the other branch of the if statement **** 
    } 

}

+0

謝謝你,但我得到這個錯誤「的類型或命名空間名稱‘數據集’可能找不到(是否缺少using指令或程序集引用」爲什麼? – 2013-02-15 09:36:18

+0

由於您使用的類型的數據‘數據集’,除非你告訴你的系統,你需要它的類型是不可用的。@Nave,我們可以只有幫助你到目前爲止。你必須做到這一點學習,但我們也不知道你的系統的一切。每個人的評論都是關於另一個錯誤......如果你的工作中存在一串錯誤,你不能只在這裏舉報,希望我們能夠從一半的代碼中解決所有問題,並且不能訪問你的平臺。你必須以我們的答案爲出發點來推斷你的系統正在做什麼,將它們和其他來源一起閱讀,然後找出答案。 – boisvert 2013-02-17 18:45:12