2015-10-28 2 views
-1

Вот мое действие Создание моего контроллера:Как передать объект внутри объекта с контроллера на представление?

[HttpPost] 
public ActionResult Create(Pedido pedido) 
{ 

    List<Produto> lista = new List<Produto>(); 

    if (ModelState.IsValid) 
    { 
      //Cliente cliente = unitOfWork.ClienteRepository.Busca(pedido.ClienteId); 
      Produto produto = unitOfWork.ProdutoRepository.Busca(pedido.ProdutoId); 
      lista.Add(produto); 
      pedido.produtos = lista; 
      //pedido.cliente = cliente; 
      unitOfWork.PedidoRepository.Adiciona(pedido); 
      unitOfWork.Salva(); 
      return RedirectToAction("Index"); 
     } 
} 

Мой объект pedido нормально ... с объектом Cliente ок ... но когда объект pedido переходит к указателю вид ... как-то объект Cliente, что находится внутри объекта pedido теряется ...

Вот мой Посмотреть индекс:

@model IEnumerable<ProjetoZeus.Models.Pedido> 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Lista de Pedidos</h2> 

<p> 
    @Html.ActionLink("Adicionar Novo", "Create") 
</p> 

<fieldset> 
    <legend>Pedidos</legend> 

    <table> 
     <tr> 
      <th>@Html.DisplayNameFor(model => model.ID)</th> 
      <th>Produto</th> 
      <th>Preço</th> 
      <th>@Html.DisplayNameFor(model => model.cliente)</th> 
     </tr> 
     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(model => item.ID) 
       </td> 
       <td> 
        @Html.DisplayFor(model => item.produtos[0].Nome) 
       </td> 
       <td> 
        @Html.DisplayFor(model => item.produtos[0].Preco) 
       </td> 
       <td> 
        @Html.DisplayFor(model => item.cliente.NomeCliente) 
       </td> 
      </tr> 

     } 
    </table> 

</fieldset> 

В представлении единственное, что является недействительным мой объект Cliente и мой список.

+0

Каков ваш фактический вопрос. Вы указали метод POST для 'Create()', который, по вашему утверждению, работает (его не имеет значения), и вы показываете представление для 'Index()', которое, по вашему утверждению, отсутствует, но вы даже не указали код для 'Index()' метод (что актуально) –

+0

я точно не знал, в чем была моя проблема ... Я решил теперь в своей модели, я не объявил две переменные с VIRTUAL – Daniel

+0

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

ответ

1

Я думаю, что вам действительно нужно, это

return View("Index", lista); 

вместо

return RedirectToAction("Index") 

, который перенаправляет браузер "Index" действие контроллера.

0

Код return RedirectToAction("Index"); перенаправляет пользователя на ваш вид Index (типа HttpGet). Исходя из предположения, что Index действие извлекает из базы данных IEnumerable<ProjetoZeus.Models.Pedido>. Если обновленное значение БД обновило «Cliente», оно будет равно null.

Смежные вопросы