Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC5Razor中,如何将与返回的模型不同的模型传递给控制器?_C#_Razor_Asp.net Mvc 5_Models - Fatal编程技术网

C# 在MVC5Razor中,如何将与返回的模型不同的模型传递给控制器?

C# 在MVC5Razor中,如何将与返回的模型不同的模型传递给控制器?,c#,razor,asp.net-mvc-5,models,C#,Razor,Asp.net Mvc 5,Models,我有一个带有3个图表的cshtml页面。为了生成图表的数据,我有3种不同的方法,但它们都采用相同的参数。因此,我创建了以下模型 public class ChartParameterModel { [Required] public String BankID { get; set; } [Required] public String CompanyID { get; set; } [Required] public DateTime Sta

我有一个带有3个图表的cshtml页面。为了生成图表的数据,我有3种不同的方法,但它们都采用相同的参数。因此,我创建了以下模型

public class ChartParameterModel
{
    [Required]
    public String BankID { get; set; }

    [Required]
    public String CompanyID { get; set; }

    [Required]
    public DateTime StartDate { get; set; }

    [Required]
    public DateTime EndDate { get; set; }

    public Boolean PercentByItemCount { get; set; }
}
“我的页面”的控制器具有以下操作:

public ActionResult GetCharts(ChartParameterModel model)
{
    return View(ChartDataController.GetChartData(model.BankID, model.CompanyID, model.StartDate, model.EndDate, model.PercentByItemCount));            
}
在cshtml页面中,似乎只能有一个模型。所以我不知道如何传递ChartParameter模型,比如说点击一个按钮,然后返回我的图表数据

如果我硬编码ChartParameterModel,它工作正常。只需要从cshtml中获取值就可以了

谢谢

编辑:

以下是视图:

@model IEnumerable<IEnumerable<SeriesDataItem>>

@{
    ViewBag.Title = "Dashboard Home";
}

<div class="chart-wrapper">
            @(Html.Kendo().Chart(Model.First())
                .Name("chtItemsByType")
                .Title(title => title
                    .Text("Items By Type")
                    .Position(ChartTitlePosition.Top)
                )
                .Legend(legend => legend
                    .Position(ChartLegendPosition.Left)
                )
                .Series(series =>
                {
                    series.Pie(
                        model => model.ItemCount,
                        model => model.ItemType,
                        null,
                        model => model.Exploded
                        )
                        .Labels(labels => labels
                            .Visible(true)
                            .Template("#= dataItem.ItemCount#")
                        )
                        .Tooltip(tooltip => tooltip
                            .Visible(true)
                            .Template("#= dataItem.ItemAmountDisplay# #= dataItem.YValue# %")
                        );                        
                })
                .Theme("Bootstrap")
                .HtmlAttributes(new { style = "height:100%;" })           
            )
        </div>
@model IEnumerable
@{
ViewBag.Title=“仪表板主页”;
}
@(Html.Kendo().Chart(Model.First())
.Name(“chtItemsByType”)
.Title(Title=>Title
.文本(“按类型列出的项目”)
.位置(图表标题位置.顶部)
)
.Legend(Legend=>Legend
.位置(ChartLegendPosition.左)
)
.系列(系列=>
{
系列,派(
model=>model.ItemCount,
model=>model.ItemType,
无效的
model=>model
)
.标签(标签=>标签
.可见(真实)
.Template(“#=dataItem.ItemCount#”)
)
.工具提示(工具提示=>工具提示
.可见(真实)
.Template(“#=dataItem.ItemAmountDisplay##=dataItem.YValue#%”)
);                        
})
.主题(“引导”)
.HtmlAttributes(新的{style=“height:100%;”})
)
Cef, 是的,视图模型可以根据需要而有所不同。i、 e.您可以定义“动态”类型的模型

因此,可以有多个操作方法针对相同的视图但不同的模型

此外,如果您的模型的所有属性对于所有操作都相同,但对于某些属性不同,则可以包含“dynamic”类型的其他属性,这些属性将接受运行时确定的数据


此外,如果所有操作都要求所有属性相同,但只有一些附加值不同,则可以保持视图模型相同,但不同的属性可以作为ViewBag值传递。

这里有一种方法:

$.ajax({
         url: '@Url.Action("GetCharts", "Dashboard")',
         type: 'POST',
         dataType: 'json',
         cache: false,
         data: {
                 BankID: "48",
                 CompanyID: "0",
                 StartDate: "1/1/2001",
                 EndDate: "2/2/2002",
                 PercentByItemCount: false                            
               },
        });

然后,视图引用的模型应该无关紧要。

很难理解您的问题是什么。如果有基于模型的视图,则模型的属性将发送到控制器。显示您的视图。也许我必须将参数作为系列数据的一部分包括在内?或者在那个模型中的某个地方?在你编辑之前,你认为有谁会知道你在使用
Kendo.Chart
?如果需要在视图中使用
IEnumerable
ChartParameterModel
,请使用包含两个属性的视图模型,每个属性对应一个模型。我认为图表没有那么重要,因为我的问题是更一般的“如何传递与视图中使用的模型不同的模型”,而不管我使用的是什么控件。@Cef对于什么模型操作接受为参数以及它返回什么模型,绝对没有要求。。。它主要取决于您在视图中呈现什么或在JavaScript中运行什么来调用操作。