Модели анонимных типов в частичных представлениях в MVC2
Я видел несколько примеров, которые используют анонимный тип для передачи данных в представление. Кажется, мне не хватает важной информации. Рассмотрим следующий надуманный пример:
public class BlogController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Title(object args)
{
return View(args);
}
}
Index.aspx звонки
<%= Html.Action("Title", new { Name = "Jake" }) %>
И title.ascx это просто:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<h3><%= Model.Name %>'s Blog</h3>
Переход к рассматриваемому действию вызывает исключение времени выполнения:
'object' does not contain a definition for 'Name'
Я понимаю, что есть и другие способы сделать это. Я мог бы сделать мой взгляд строго типизированным или вставить данные в объект ViewData. В этом конкретном случае я хочу иметь возможность передавать любой объект, имеющий свойство Name, и привязываться к Name. Я что-то упускаю?
1 ответ
Параметр args
имеет тип object
, Когда вы передаете значения вашего маршрута в Html.Action
вы на самом деле в конечном итоге с string
аргумент называется Name
который, конечно, не будет привязан к параметру args
,
Измените ваш звонок на:
<%= Html.Action("Title", new { args = new { Name = "Jake" } }) %>