c#MVC使用@url.action中的复杂对象和RouteValueDictionary

c#MVC使用@url.action中的复杂对象和RouteValueDictionary,c#,asp.net-mvc,asp.net-mvc-4,url.action,C#,Asp.net Mvc,Asp.net Mvc 4,Url.action,我必须在C#MVC中制作一个统计项目,其中包含几个步骤,需要为用户提供不同的渲染(浏览器、PDF文档、Excel等) 对于浏览器部分,我当前有一个复杂的类,其中包含一个集合,该集合用作显示表、图表或两者的视图的模型 我使用@url.action获取图表的图像 我已经定义了一个RouteValueDictionary来传递url.action参数中的对象 src=“@Url.Action”(“SampleChart”、“Statistique”、Model.RouteValues))“ 在控制器中

我必须在C#MVC中制作一个统计项目,其中包含几个步骤,需要为用户提供不同的渲染(浏览器、PDF文档、Excel等) 对于浏览器部分,我当前有一个复杂的类,其中包含一个集合,该集合用作显示表、图表或两者的视图的模型

我使用@url.action获取图表的图像 我已经定义了一个RouteValueDictionary来传递url.action参数中的对象

src=“@Url.Action”(“SampleChart”、“Statistique”、Model.RouteValues))“

在控制器中:填充布尔值和字符串,但不填充字典(ResultStatistique)。你有办法解决我的问题吗

下面是模型的简化版本

    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; }
} 

好的。谢谢你的评论。 可能没有简单的解决办法。 所以我寻找另一个解决方案来获取我的图像源。这是离题的,但对于那些感兴趣的人来说,解决方案不是在两个动作之间做一次往返。您必须在第一个操作中生成一个文件,并将其作为字节数组传递给模型

第一个动作就是这样

ms = new MemoryStream();
Chart.SaveImage(ms, ChartImageFormat.Png);
modelOUT.ByteArray = ms.ToArray();
这就是我们的看法

@{
    var base64 = Convert.ToBase64String(Model.ByteArray);
    var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
}

<img src="@imgSrc" />
@{
var base64=Convert.tobase64字符串(Model.ByteArray);
var imgSrc=String.Format(“数据:image/gif;base64,{0}”,base64);
}

查看作为图像url呈现给浏览器的内容会很有帮助。控制器中视图的获取位置在哪里?不能使用
@url.Action(“SampleChart”、“Statistique”、new{modelIN=Model})
?没有modelIN是null您不能使用的。
Url.Action()
方法(以及所有构建
RouteValueDictionary
的方法)使用属性名的
.ToString()
生成查询字符串。它不在复杂属性上使用递归。
ms = new MemoryStream();
Chart.SaveImage(ms, ChartImageFormat.Png);
modelOUT.ByteArray = ms.ToArray();
@{
    var base64 = Convert.ToBase64String(Model.ByteArray);
    var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
}

<img src="@imgSrc" />