我有一个包含图表和表格数据的 mvc Web 应用程序。
设想:
我在 Index 方法中填充数据并将模型返回到视图以进行绑定。在视图中,表与数据绑定。我也想用相同的数据绑定图表。图表与子操作绑定。我在 Index 方法中设置 TempData[] 对象并在 Chart 操作中检索相同的对象。
代码:
控制器
public ActionResult Index()
{
var data = new List<MyModel>()
{
new MyModel { Text = "Name1", Value = 123 },
new MyModel { Text = "Name2", Value = 24 },
};
TempData["data"] = data;
return View(data);
}
public FileContentResult Chart()
{
List<MyModel> data = TempData["data"] as List<MyModel>;
var chart = new Chart
{
Width = 300,
Height = 450,
};
if (data != null)
{
chart.ChartAreas.Add("");
chart.Series.Add("");
chart.Series[0].ChartType = SeriesChartType.Column;
foreach (var q in data)
{
chart.Series[0].Points.AddXY(q.Text, Convert.ToDouble(q.Value));
}
}
using (var chartimage = new MemoryStream())
{
chart.SaveImage(chartimage, ChartImageFormat.Png);
return File(chartimage.GetBuffer(), @"image/png");
}
}
public async Task<ActionResult> Export()
{
var converter = new HtmlToPdf();
var baseAddress = new Uri("http://localhost:4545/");
var cookieContainer = new System.Net.CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (HttpClient client = new HttpClient(handler) { BaseAddress = baseAddress })
{
var result = await client.GetAsync("/Home/Index");
var htmlString = await result.Content.ReadAsStringAsync();
var doc = converter.ConvertHtmlString(htmlString, baseAddress.ToString());
doc.Save(System.Web.HttpContext.Current.Response, true, "test.pdf");
doc.Close();
}
return null;
}
看法:
<div class="row">
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
<div class="col-md-12">
<table>
@{
foreach (var item in Model)
{
<tr>
<td>
@item.Text
</td>
<td>
@item.Value
</td>
</tr>
}
}
</table>
</div>
<div class="col-md-12">
<img src="@Url.Action("Chart")" />
<input type="submit" value="Filter" />
</div>
}
<div class="col-md-12">
@using (Html.BeginForm("Export", "Home", FormMethod.Post))
{
<input type="submit" value="Export" />
}
</div>
问题:
在这里,我使用 SelectPdf 将网页导出为 pdf。当我单击导出按钮时,它会获取网页的内容,以便再次呈现索引和图表。但在这里我没有得到 tempdata[] 值。它显示为空。所以图表数据没有进入pdf
请帮我解决这个问题