2014-01-19 49 views
0

我想在MVC的錶行和列中選擇*數據。當我這樣做時,我的模型始終爲空。我正在使用ADO.NET EDM。MVC中的模型爲空

我的動作控制器代碼:

public ActionResult SellerView1(string Seller) 
    { 
     KeywinTest_Project1.tblSeller sellerName = new tblSeller(); 

     SqlConnection cn = new SqlConnection(@"Data Source=.;Initial Catalog=KeywinDB;Integrated Security=True;Pooling=False"); 
     string query = "Select * from tblSeller"; 
     SqlCommand cmd = new SqlCommand(query, cn); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     if (dt.Rows.Count > 0) 
     { 
      ViewBag.Name = dt.Rows[0]["sellerName"].ToString(); 
     } 
     return View(); 
    } 

我查看代碼:

@model IEnumerable<KeywinTest_Project1.tblSeller> 
@using System.Web.UI.WebControls; 

@{ 
    ViewBag.Title = "SellerView1"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<body> 
    <table> 
     @Model = @ViewBag.Name 
     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @item.sellerName 
       </td> 
      </tr> 
     } 
    </table> 
</body> 

我的模型代碼:

​​

ve done is, i已經宣佈我的觀點作爲模型類是由我的EDM生成的。

我在做什麼錯在這裏? PLZ指南。 感謝

回答

2

因爲你沒有通過你的模型,當你從Controller

return View(); 

這裏給您回View你應該通過你的ViewModel這是IEnumerable<KeywinTest_Project1.tblSeller>, 像這樣(例如往返):

var sellerList = dt.AsEnumerable() 
        .Select(d => new tblSeller { sellerName = d["sellerName"].ToString() }) 
        .ToList(); 
return View(sellerList); 
+0

我得到一個鑄造錯誤,因爲我的對象是類型keywin和我的視圖是可枚舉的 –

+0

是的,你應該先得到你的tblSeller列表,將你的dt轉換爲Enumerable並通過它 –

+0

... DataTable和SqlDataAdapter ....'開始TriggerNightmares()' – Tommy

0

你沒有模型傳遞給視圖,就像這樣:

return View(sellerName); 

sellerName對象不是一個IEnumerable,所以你應該以使其重寫代碼的一部分工作。