Допустим, ваше действие контроллера выглядит примерно так:
public ActionResult List()
{
List<string> myList = database.GetListOfStrings();
(...)
}
Теперь вы хотите передать свой список представлению, скажем «List.aspx». Это достигается тем, что действие возвращает ViewResult (ViewResult является подклассом ActionResult). Вы можете использовать метод View контроллера для возврата ViewResult следующим образом:
public ActionResult List()
{
List<string> myList = database.GetListOfStrings();
(...)
return View("List", myList);
}
Чтобы иметь доступ к списку строго типизированным способом в вашем представлении, он должен быть производным от ViewPage, где T - тип данных, которые вы передаете. Таким образом, в текущем случае наше представление (в List .aspx.cs) будет примерно так:
public partial class List : ViewPage<string>
{
(...)
}
Данные, передаваемые в представление таким образом, называются «ViewData». Чтобы получить доступ к данным, вы должны пройти через свойства ViewData.Model на ViewPage. Таким образом, чтобы отобразить содержимое списка, вы должны написать (в List.aspx)
<ul>
<% foreach(var s in this.ViewData.Model){ %>
<li> <%= s %> </li>
<% } %>
</ul>
Здесь this.ViewData.Model имеет тип, указанный в параметре типа T в ViewPage, поэтому в нашем случае this.ViewData.Model имеет тип List.
Вы можете использовать ретранслятор для рендеринга подобных вещей, но я бы не рекомендовал это. Если вы хотите использовать нечто подобное, проверьте модуль Grid проекта MvcContrib на CodePlex.