Inquiridor
Usar um método da Controller na pagina usando Razor

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>
}
}
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
-
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>
- Editado Filipe Augusto Lima de Souza sexta-feira, 16 de agosto de 2013 16:15