Отправить объект через ViewData.Model в asp.net mvc

Мне нужна ваша помощь.

Я попытался передать объект форме представления в контроллер с помощью ViewData.Model

это индексный метод в контроллере

public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
        dynamic stronglytyped = new { Amount = 10, Size = 20 };
        List<dynamic> ListOfAnynomous = new List<object> { new { amount = 10 } };


         ViewData.Model =  ListOfAnynomous[0];
        return View();
    }

и это часть представления

        <div>
             @Model.amount 

        </div>

это erro

'object' does not contain a definition for 'amount'

пожалуйста, кто-нибудь может мне помочь.

Ответ 1

Исключение выбрано потому, что вы передаете анонимный объект. Анонимные типы являются внутренними, поэтому их свойства не видны вне их определяющей сборки. Эта статья дает хорошее объяснение.

Хотя вы можете использовать html-помощники для отображения свойств, например

@Html.DisplayFor("amount")

вы также потеряете intellisense, и приложение будет трудно отлаживать.

Вместо этого используйте модель представления для представления того, что вы хотите отобразить/отредактировать, и передать модель в представление.

Ответ 2

Ваш код неверен. Если вы хотите использовать объект model, вы передадите его в представление:

return View(ListOfAnynomous[0]);

После того, как вы сможете использовать свойство "Модель". ViewData - еще один контейнер, не связанный с свойством модели.

В итоге ваш метод будет выглядеть следующим образом:

public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
        dynamic stronglytyped = new { Amount = 10, Size = 20 };
        List<dynamic> ListOfAnynomous = new List<object> { new { amount = 10 } };


         // ViewData.Model =  ListOfAnynomous[0];
        return View(ListOfAnynomous[0]);
    }