Чтобы представление полностью интегрировалось с объектом, который вы передаете ему из действия, вам нужно изменить атрибут Inherits=
в @Page directive
, расположенном в верхней части представления.
Обязательно передайте этот объект представлению из действия с помощью следующего:
public MyController : Controller
{
public ActionResult ShowResults()
{
List<Result> results = GenerateResults();
return View(results); // this passes 'results' as the model of the view
}
}
В этом случае у вас есть пользовательский объект с именем Result
, который вы передаете в представление списка. Таким образом, в директиве @Page
вы меняете Inherits=
на
Inherits="System.Web.Mvc.ViewPage<List<MyNameSpace.Models.Result>>"
Итак, ваша полная директива @Page
будет выглядеть примерно так:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<MyNameSpace.Models.Result>>" %>
То, что это делает, говорит View
, что ваш Model
имеет тип List<MyNameSpace.Models.Result>
.
Теперь в представлении объект Model
будет автоматически приведен к типу List<MyNameSpace.Models.Result>
, поэтому вы можете легко и безошибочно выполнять следующие действия.
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<MyNameSpace.Models.Result>>" %>
<table>
<tr>
<th>Result PropertyOne</th>
<th>Result PropertyTwo</th>
</tr>
<% foreach(var result in Model){ %>
<tr>
<td><%: result.PropertyOne %></td>
<td><%: result.PropertyTwo %></td>
</tr>
<% } %>
</table>