Tengo problemas para pasar mi modelo a un método de controlador. Espero que alguien pueda ayudar.

Aquí está el modelo (según lo solicitado):

public IEnumerable<StatsForPieChart> statsForPieChart { get; set; }

public class StatsForPieChart
{
    public string destAgency { get; set; }
    public long recordCount { get; set; }
}

Básicamente, tengo una vista parcial titulada "_Report.cshmtl". Dentro de esta vista parcial, he utilizado el retorno de una función para crear una tabla de datos y ahora quiero usar esos mismos datos (sin ejecutar una llamada de función adicional) para mostrar un gráfico circular. Dentro de la vista parcial, hago lo siguiente:

@Url.Action("PieChartReport", "Agency", Model.statsForPieChart)

Ya he confirmado a través de un salto en esta línea, que statsForPieChart Inumerable se rellena correctamente con los datos que necesito. El método del controlador tiene el siguiente aspecto:

public ActionResult PieChartReport(dbModels.AgencyViewModel.statsForPieChart _statsForPieChart)

Cuando interrumpo en la línea uno del método del controlador, el método es consciente de que _statsForPieChart es una referencia al Modelo, pero el valor ahora es NULL. Perdí todos los datos.

Estoy seguro de que es algo simple, pero aún no he encontrado una solución. Gracias de antemano por tu ayuda.

Entrada adicional basada en los intentos de utilizar las sugerencias a continuación: 1. Intenté usar lo siguiente, pero el valor permaneció NULL:

@Html.Action("PieChartReport", "Agency", new { _statsForPieChart = Model.statsForPieChart })
  1. Intenté usar lo siguiente con etiquetas de formulario, pero el valor seguía siendo NULL:

    @Html.HiddenFor(model => model.statsForPieChart)
    @Html.Action("PieChartReport", "Agency", new { _statsForPieChart = Model.statsForPieChart })
    
  2. Intenté usar el siguiente formulario y nunca se llamó al método:

    @using (Html.BeginForm ("PieChartReport", "Agencia")) { @ Html.HiddenFor (modelo => mode.startsForPieChart) }

0
Anonymous3521 2 feb. 2017 a las 17:48

2 respuestas

La mejor respuesta

Estás utilizando un método de ayuda incorrecto. Url.Action se usa para generar una URL para una acción particular y el controlador se pasa como entrada, creo que necesita Html.Action en este caso, ya que desea representar la vista parcial como resultado de esta llamada, y tenga en cuenta que el parámetro pasó a {{ X2}} debe coincidir con el nombre con el parámetro que tiene en el método de acción; de lo contrario, no se volverá a publicar.

Así que cambia esto:

@Url.Action("PieChartReport", "Agency", Model.statsForPieChart)

A esto:

@Html.Action("PieChartReport", "Agency", new {_statsForPieChart= Model.statsForPieChart })
0
Ehsan Sajjad 2 feb. 2017 a las 15:04

Pude pasar con éxito los datos utilizando una recomendación anterior. La solución final, se ve de la siguiente manera:

<img src="@Html.Action("PieChartReport", "Agency", new { model = Model })" />

Todavía no sé por qué originalmente devolvió NULL, pero está funcionando ahora.

0
Anonymous3521 2 feb. 2017 a las 18:13