Модели анонимных типов в частичных представлениях в 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" } }) %>
Другие вопросы по тегам