【发布时间】:2017-06-20 23:26:40
【问题描述】:
我必须在 C# MVC 中创建一个统计项目,其中包含需要为用户提供不同渲染的多个步骤(浏览器、PDF 文档、Excel 等) 对于浏览器部分,我目前有一个复杂的类,其中包含一个集合,该集合用作显示表格、图表或两者的视图的模型。
我使用@url.action 来获取图表的图像 我已经定义了一个 RouteValueDictionary 来传递 url.action 参数中的对象
src="@Url.Action("SampleChart", "Statistique", Model.RouteValues ))"
在控制器中:填充布尔值和字符串,但不填充字典(resultatsStatistique)。你有什么想法可以解决我的问题吗?
下面是模型的简化版
public class StatisticDTO
{
public virtual string Stat_Title { get; set; }
public bool DisplayChart { get; set; }
public bool DisplayTable { get; set; }
public Dictionary<string, RowStat> resultatsStatistique;
public RouteValueDictionary RouteValues
{
get
{
var rvd = new RouteValueDictionary();
rvd["DisplayChart"] = DisplayChart;
rvd["DisplayTable"] = DisplayTable;
rvd["resultatsStatistique"] = resultatsStatistique;
return rvd;
}
}
}
public class RowStat
{
public virtual string prest_libe { get; set; }
public virtual decimal prest_effec { get; set; }
public virtual int prest_order { get; set; }
public virtual string prest_sex { get; set; }
}
以下是我观点的简化版
@model StatisticDTO
<div>
@if (Model.DisplayChart )
{
<div>
<img src="@Url.Action("SampleChart", "Statistique", Model.RouteValues ))" />
</div>
}
@if (Model.DisplayTable)
{
@Html.Partial("_Tableau", Model)
}
</div>
以下是控制器的简化版
public ActionResult SampleChart(StatisticDTO modelIN)
{
(.....)
MemoryStream ms = new MemoryStream();
chart.SaveImage(ms, ChartImageFormat.Png);
return File(ms.ToArray(), "image/png");
}
【问题讨论】:
-
查看呈现给浏览器的内容作为图像的 url 会很有帮助。
-
控制器中视图的Get在哪里?
-
不能使用
@Url.Action("SampleChart", "Statistique", new { modelIN = Model })? -
没有modelIN为空
-
你不能。
Url.Action()方法(以及构建RouteValueDictionary的所有方法)使用属性名称的.ToString()来生成查询字符串。它不对复杂属性使用递归。
标签: c# asp.net-mvc asp.net-mvc-4 url.action