这是scenaio,我有一个Employee对象和一个包含员工列表的Company对象。
我Company.aspx
继承自ViewPage<Company>
。
在Company.aspx中,我致电
Html.DisplayFor(m => m.Employees).
我有Employee.ascx
部分视图,该视图继承自ViewUserControl<Employee
&gt;在我的DisplayTemplates文件夹中。
一切正常,Company.aspx
为每位员工提供Employee.ascx
部分内容。
现在我的控制器上还有两个名为GetEmployees
和GetEmployee(Id)
的方法。
在GetEmployee(Id)
操作中,我想返回标记以显示这一个员工,并在GetEmployees()
我想呈现标记以显示所有员工(这两个操作方法将通过AJAX)。
在GetEmployee操作中,我调用
return PartialView("DisplayTemplates\Employee", employee)
虽然我更喜欢像
这样的东西,但这有效return PartialViewFor(employee)
将根据惯例确定视图名称。
Anwyay,我的问题是我应该如何实施GetEmployees()
行动?
我不想创建更多的观点,因为坦率地说,我不明白为什么我应该这样做。
我已经尝试过以下惨遭失败的事情:)
return Content(New HtmlHelper<IList<Of DebtDto>>(null, null).DisplayFor(m => debts));
但是如果我可以在我的控制器中创建一个HtmlHelper对象的实例,我想我可以让它工作,但感觉不对。
有什么想法吗?我错过了一些明显的东西吗?
答案 0 :(得分:2)
我总是通过在IEnumerable<T>
上循环部分视图并在每个项目上调用Html.DisplayFor()
来解决这个问题,但后来我甚至不知道你可以致电Html.DisplayFor()
在IEnumerable<T>
上并让它自动呈现每个模板元素,直到你在问题中这样说。谢谢你,顺便说一下! :)
无论如何,我认为最好的办法是简单地返回一个接受雇员集合的PartialView()
,并且一次呈现一个调用Html.DisplayFor()
。它不如从控制器返回HtmlHelper那么优雅,但至少它很容易实现。