2012-06-13 49 views
0

所以我创建了一个在MVC 4中测试DI的项目。是的,这很简单。我有一个看起来像这样的控制器。我的视图如何知道使用MVC返回什么类型的数据?

public class CompanyManagementController : Controller 
{ 
    private ICompanyService companyService; 

    public CompanyManagementController(ICompanyService companyService) 
    { 
     this.companyService = companyService; 
    } 

    public ActionResult Index() 
    { 
     return View(companyService.GetCurrentCompanies()); 
    } 
} 

我弄不清楚的是如何告诉视图Index.cshtml,我有这个List,我回到它。当我只有一个POCO时很容易。我这样做

[HttpGet] 
public ActionResult Create() 
{ 
    var company = new Company(); 
    return View(company); 
} 

[HttpPost] 
public ActionResult Create(Company company) 
{ 
    using(var context = new InventoryContext()) 
    { 
     context.Companies.Add(company); 
     context.SaveChanges(); 
    } 
    return View("Create"); 
} 

这是非常容易的,因为我刚才说

@model MvcInventoryManager.Models.Company 
在Create.cshtml文件

任何提示?我想要做的是能够遍历返回公司的列表。

谢谢!

+0

你发送一个列表视图和y你不确定'模型'?如果是这样,那就把模型改成IEnumerable '。 '@model IEnumerable ' – Buildstarted

回答

5

companyService.GetCurrentCompanies()的退货类型是什么?这将是你想用来在视图中绑定Model的类型。例如,如果类型为IEnumerable<Company>那么在你看来,你将宣布这一点:

@model IEnumerable<MvcInventoryManager.Models.Company> 

这样的Model属性的类型将匹配什么东西被传递给视图,你可以通过Model循环:

foreach (var company in Model) 
+0

对! Duh,我的意思是,当你指出它时,它显得非常明显 - 那么我的Jquery ajax函数仍然会发布到Create(),我只是将其更改为返回JSON。 – Kenn

0

通过它像这样宣告你的模型视图只是循环之后:

@foreach (var company in Model) 
{ 
Html.DisplayFor(modelItem => company.companyID) 
Html.DisplayFor(modelItem => company.CompanyName) 
} 
相关问题