2011-02-14 35 views
1

首先,我是一個PHP開發人員,試圖讓我的頭腦圍繞asp.net。php到asp.net:howto在視圖中顯示sql結果

所以我創建了一個基本的MVC項目。

我不知道(即選擇產品。*)的字段的查詢我該怎麼辦:

  1. 在控制器上執行 - 我的嘗試:

    public ActionResult getProducts() 
    { 
    
        using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ToString())) 
        { 
         string sql = "select * from products"; 
    
         SqlCommand cmd = new SqlCommand(sql, cn); 
         cn.Open(); 
         SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);    
        } 
    
        return View(); 
    } 
    
  2. 如何傳遞查看結果,然後循環顯示,如下所示:

    foreach ($data as $key => $val) 
    { 
        echo $key.' = '.$val.'<br>'; 
    } 
    

請幫忙,因爲這是SOOOOO簡單的PHP,但在asp.net似乎很混亂。

ps。對於格式化抱歉。

乾杯, trav。

+0

你應該考慮學習實體框架。這絕對是更好的數據訪問方法。 – LukLed 2011-02-14 04:39:57

+0

而且你絕對應該通過一些MVC教程,因爲這個問題不僅是關於遍歷結果,還要設置視圖模型,傳遞,在視圖中使用它。很多要學習。 – LukLed 2011-02-14 04:54:48

回答

1

首先,您需要一個模型類:

public class Product 
{ 
    public string Name { get; set; } 
    public int Price { get; set; } 
    public int Id { get; set; } 
} 

而在你的控制器:

public ActionResult getProducts() 
    { 

        var products = new List<Product>(); 

     using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ToString())) 
     { 
      string sql = "select * from products"; 

      SqlCommand cmd = new SqlCommand(sql, cn); 
      cn.Open(); 
      SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 

          //read the results 
          while(rdr.Read()) 
          { 
           //map or hydrate a new product 
           var p = new Product(); 
           p.Name = rdr["Name"]; 
           p.Id = Int.Parse(rdr["Id"]); 
           p.Price = Int.Parse(rdr["Price"]); 

           //add new product to list we created earlier 
           products.Add(p); 
          }    
     } 

     return View(products); 
    } 

並在視圖:

 //make sure the page inherits from ViewPage<List<Product>>  

    <% foreach(var product in Model) { %> 
      <%= product.Name %> 
    <% } %> 

一個警告。由於不使用像Entity Framework或Nhibernate這樣的ORM,而且沒有通過不使用View Model來遵循最佳實踐,所以您在這裏做的事情是「艱難的方式」。這當然很好,只是要了解的東西。 ;)