2016-03-31 79 views
1

嗨,我一直試圖在最後一個小時內將我的c#後端連接到前端以輸出列表。 我一直想知道將數據從後端傳遞到前端的最佳方式。如何在ASP.NET中將後端列表傳遞給前端

在我的場景中,我只想從mvc中輸出一個簡單的列表,但是如何將我的列表發送到前端,以便我可以做一些簡單的操作,例如使用類似foreach的方式輸出表中的所有數據:

foreach (var value in customerList) { 
<p>value.Name</p> 
} 

我已經看過了解決方案建議在這個環節:How to pass List from Controller to View in MVC 3.通過阿爾奇爾

但我想不通的地方放 保護內部的ViewResult視圖( 對象模型 )

那麼如何輸出我的列表? 我知道列表包含內容,因爲我已經放置了一個斷點並逐步完成了它。

這是我的代碼看起來像:

public List<Customer> customerList = new List<Customer>(); 
    public ActionResult Index() 
    { 

     var client = new CustomerAzureAPIApp(); 
     var response = client.Customer.Get(); 
     var customers = response; 

     foreach (var customer in customers) 
     { 
      customerList.Add(customer); 
     } 

     return View(); 
} 

我知道我可以使用ViewBag,但我不希望創建列表中的每個項目的新ViewBag,我寧願只發送整個列表。有什麼建議麼?

回答

3

好吧,我不知道最好的解決辦法,但不要對您提供的鏈接中由archil建議的代碼感到困惑。

你根本就只是在

return View(customerList); 

傳遞你customerList作爲參數,因爲該行代碼使用呈現爲了響應模型自動創建一個ViewResult對象。

所以在您的前端,你可能最終會做這樣的事情你的表:

<table 
    <tr> 
     <th>ID</th> 
     <th>Name</th> 
    </tr> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td>@item.Name</td> 
     </tr> 
    } 
</table> 

記住,因爲我們面對的是Razor視圖引擎有「@」您的項目之前。

0

在您查看已聲明模型,它應該被綁定,然後遍歷它:

@model List<Customer> 

@foreach (var value in Model) { 
<p>value.Name</p> 
} 

你需要通過你的列表回從操作來查看該sceond的事情,所以改變以下:

return View(); 

到:

return View(customerList); 
1

正如前文所說,你可以通過在視圖

return View(*insert list here*); 

,比您的視圖返回列表使用型號:

@model List<*insertTypehere*> 

,並在您的foreach你可以使用變量名

Model 

還有另一種方法,不在視圖中返回任何內容,並在您的控件中使用Viewbag奧勒。

Viewbag.TheNameYouWish = *insert list* 

,並在你的看法,你可以使用:

@Viewbag.TheNameYouWish 

所以無論

@foreach (var item in Model) 

@foreach (var item in @Viewbag.TheNameYouWish) 

做這項工作。

相關問題