2015-04-02 3 views
0

Мне нужна ваша помощь.отправить объект через 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' 

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

+0

Не используйте 'object' и' dynamic'. Создайте модель представления и передайте модель представления в представление. –

+0

@StephenMuecke Спасибо, я получил решение, но, пожалуйста, вы могли бы объяснить, почему компилятор не видит определение динамического объекта. – Moh

+0

@StephenMuecke Надеюсь, что вы ответите, чтобы принять его. – Moh

ответ

0

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

В то время как вы можете использовать HTML хелперы для отображения свойств, например

@Html.DisplayFor("amount") 

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

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

-1

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

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]); 
    } 
Смежные вопросы