none
Usar um método da Controller na pagina usando Razor RRS feed

  • Pergunta

  • Olá. 

    Tenho uma tabela e gostaria que o valor da coluna fosse um resultado que posso obter e um método que esta na Controller.

    Consigo fazer isto usando Razor ?

    Agradeço desde já, segue o código de exemplo.

                    

               @for (int i = 0; i < pedido.Count(); i++)
                {
                    @Html.HiddenFor(x => Model.ToList()[i].Id)
                    
                    if (valorDefault > i)
                    {
                    <tr>
                        <td>@Html.DisplayFor(modelItem => pedido[i].Status.Descricao)</td>
                        <td>@Html.DisplayFor(modelItem => pedido[i].Endereco.Estado)</td>
                        <td>@Html.DisplayFor(modelItem => pedido[i].Empresa.NomeFantasia)</td>
                        <td>Aqui calcular um valor de retorno de um método que esta na controller</td>
                       <td>
                            @Html.ActionLink("Análise", "VerAnalise", new { id = pedido[i].Id })
                        </td>
                    </tr>
                    }

                }


    sexta-feira, 16 de agosto de 2013 15:42

Todas as Respostas

  • Boa tarde.

    Passei por uma situação assim, veja como esta na minha Index.cshtml

    Estou chamando uma função dentro da própria Index.


    @functions
    {
     public int ProcedimentoTeste(int variavel)
        {
            // ou pode chamar o metodo que retorna do controller
         return variavel
        }
    }
    
    
    
    
      @for (int i = 0; i < pedido.Count(); i++)
                {
                    @Html.HiddenFor(x => Model.ToList()[i].Id)
                    int Valor = @ProcedimentoTeste(modelItem => pedido[i].id_item);
                    if (valorDefault > i)
                    {
                    <tr>
                        <td>@Html.DisplayFor(modelItem => pedido[i].Status.Descricao)</td>
                        <td>@Html.DisplayFor(modelItem => pedido[i].Endereco.Estado)</td>
                        <td>@Html.DisplayFor(modelItem => pedido[i].Empresa.NomeFantasia)</td>
                        <td>@Valor</td>
                       <td>
                            @Html.ActionLink("Análise", "VerAnalise", new { id = pedido[i].Id })
                        </td>
                    </tr>
                    }
    
                }
    
    Se eu conseguir e puder te ajudar com mais alguma, me avisa


    Isco Sistemas José Luiz Borges

    sexta-feira, 16 de agosto de 2013 16:03
  • Há várias maneira de fazer isso:

    1) Criar um ViewModel em que estariam encapsulados suas vendas e a soma que seria calculada no controller. Você então passaria esse model para sua View, por exemplo:

    public PedidosViewModel
    {
        /*Pedido mais o total*/
        public Dictionaty<Pedido, double> Pedidos { get; set; }
    }


    2) Outra maneira seria usar ViewBag ou ViewData, em que na action do seu controller você poderia colocar a soma de cada pedido e iterar sobre esta.

    3) Criar uma action no controller que retorne a soma:

    /*Controller*/
    [ChildActionOnly]
    public ActionResult GetTotal(int idPedido)
    { 
      double total = 0;
                
      /*Calcular total aqui usando o Id*/
    
      return Content(total.ToString());
    }
    
    /*View*/
    <td>
      @Html.DisplayFor(modelItem => pedido[i].Status.Descricao)
    </td>
    <td>
      @Html.DisplayFor(modelItem => pedido[i].Endereco.Estado)</td>
    <td>
      @Html.DisplayFor(modelItem => pedido[i].Empresa.NomeFantasia)
    </td>
    <td>
      @Html.Action("GetTotal", "NomeDoController", new { idPedido = pedido[i].Id })
    </td>
                       





    sexta-feira, 16 de agosto de 2013 16:08