2015-09-30 62 views
-1

我有一個代碼寫在asp.net web窗體中有很多中繼器Databind,我試圖用Repository模式將它重寫到MVC 5 EF 6。我知道我不能使用MVC中的中繼器,但我怎麼能改寫MVCasp.net Repeater Databind代碼在MVC5後面

私人無效組列表(中繼器RPT,INT DTID,INT組ID,串conNumber,串CONNAME)下面的代碼 { 嘗試 {

  var list = data.List<CtItem>.Where(c.CNumber == conNumber && c.Name == conName) 

         .OrderBy(o => o.CNumber) 


      rpt.DataSource = list; 
      rpt.DataBind(); 
     } 
+0

將'list'添加到您的模型並在視圖中使用它來構建輸出。你*可能*想從ASP.NET MVC的一些入門教程開始。這樣做時,*完全忘記了您對WebForms所瞭解的一切。技能組不會結轉。如果您嘗試以「WebForms方式編寫MVC項目」,那麼您將最終得到*糟糕的*代碼,以及*您在網上找到的任何框架都將看起來很熟悉或很有幫助。 – David

回答

1

如果您的list變量將包含您需要的數據,那麼您可能想要在控制器中獲取該數據。然後你會添加到你的模型。它可能是這個樣子:

public ActionResult SomeAction() 
{ 
    var list = data.List<CtItem> 
        .Where(c.CNumber == conNumber && c.Name == conName) 
        .OrderBy(o => o.CNumber); 
    return View(list); 
} 

在這種情況下,list數據類型將爲您的視圖模型。如果還有其他數據需要轉到視圖,那麼它可能只是一個自定義視圖模型的屬性。例如:

public ActionResult SomeAction() 
{ 
    var list = data.List<CtItem> 
        .Where(c.CNumber == conNumber && c.Name == conName) 
        .OrderBy(o => o.CNumber); 
    var viewModel = new SomeViewModel(); 
    viewModel.SomeProperty = list; 
    // set other values on the view model 
    return View(viewModel); 
} 

然後在您的視圖中,您將根據模型上的值構建標記。據推測你的網格產生了某種類型的<table>。所以構建輸出可能看起來像這樣:

<table> 
    <tr> 
    <th>Column Heading</th> 
    </tr> 
    @foreach (var item in Model.SomeProperty) 
    { 
    <th> 
     <td>@item.SomeColumnValue</td> 
    </th> 
    } 
</table> 

當然,這隻有一列。無論你的結構是什麼,你都可以擴展。您也可以從元數據等中獲得列標題。有許多複雜性,您可以使用可以添加。但總的來說,你想要做的就是從數據源獲取數據,將其發送到視圖,並將其顯示在視圖中。