【问题标题】:ASP.NET MVC 3 Charting and HTTPPOSTASP.NET MVC 3 图表和 HTTPPOST
【发布时间】:2014-11-12 20:11:35
【问题描述】:

在 Asp.Net MVC 3 中工作。

控制器代码:

    [HttpPost]
    public ActionResult MyChart(string sDate)
    {
        /*Call Entity Database*/
        Contact_Center_DashboardEntities3 db = new Contact_Center_DashboardEntities3();
        var results01 = db.sp_Report_Hybrid_Metrics("9 September", sDate, "Auto", "R2/R8", "Claims", "Claims", "R02_R08.AUTO.CLM.FMN.Q").ToList();


        var chart = new Chart();
        chart.Width = 1000;
        chart.Height = 200;

        var area = new ChartArea();
        // configure your chart area (dimensions, etc) here.
        chart.ChartAreas.Add(area);

        area.AxisX.MajorGrid.Enabled = false;

        area.AxisY.MajorGrid.Enabled = false;

        area.AxisY2.MajorGrid.Enabled = false;
        area.AxisY2.LabelStyle.Format = "0%";

        // create and customize your data series.
        var series = new Series();
        foreach (var item in results01)
        {
            series.Points.AddXY(item.Date, item.Volume);
        }
        series.Font = new Font("Segoe UI", 8.0f, FontStyle.Bold);
        series.ChartType = SeriesChartType.Column;
        series.YAxisType = AxisType.Primary;


        // create and customize your data series.
        var seriesSecondary = new Series();
        foreach (var item in results01)
        {
            seriesSecondary.Points.AddXY(item.Date, item.XferPer);
        }
        seriesSecondary.Font = new Font("Segoe UI", 8.0f, FontStyle.Bold);
        seriesSecondary.ChartType = SeriesChartType.Line;
        seriesSecondary.YAxisType = AxisType.Secondary;
        seriesSecondary.LabelFormat = "0%";
        seriesSecondary.IsValueShownAsLabel = true;


        chart.Series.Add(series);
        chart.Series.Add(seriesSecondary);

        var returnStream = new MemoryStream();
        chart.ImageType = ChartImageType.Png;
        chart.SaveImage(returnStream);
        returnStream.Position = 0;
        return new FileStreamResult(returnStream, "image/png");

    }

表格查看代码:

@using (Html.BeginForm("MyChart", "Home", FormMethod.Post))
{
    <fieldset>
        <div class="editor-field">
            <input type="submit" value="09/06/2014" name = "sDate"/>
        </div>
    </fieldset>

}

当用户单击提交按钮时,值会正确传递给“MyChart”ActionResult,但随后会将我带到 MyChart 视图。我需要它做的是传递值,停留在表格视图上,然后刷新图表。

【问题讨论】:

  • 你尝试过 Ajax.BeginForm 吗?
  • 我不知道如何使用它。我知道 StackOverflow 不适用于手把手的分步说明,但如果有的话,你能举个例子吗?

标签: asp.net asp.net-mvc-3


【解决方案1】:

你可以试试这样的:

@using (Ajax.BeginForm("MyChart", "Home", new AjaxOptions{HttpMethod= "Post", UpdateTargetId = "chartContainer", InsertionMode = InsertionMode.Replace}))
{
    <fieldset>
        <div class="editor-field">
            <input type="submit" value="09/06/2014" name = "sDate"/>
        </div>
    </fieldset>
}

<div id="chartContainer">
</div>

请求由ajax完成,并将请求的响应插入到updatetargetid寻址的元素中。如果提交按钮在单击一次后应该被删除,请将表单放在 div 中。否则图表会在你按下提交按钮时被刷新。

【讨论】:

  • 试过了,但得到“AjaxOptions”不包含对“FormMethod”错误的引用。 Web.config 文件有 System.Web.Mvc.Ajax,我也尝试将它包含在视图的开头。
  • 对不起。没有视觉工作室。你没有智能吗? ;-) 它必须是 HttpMethod 和 InsertionMode = InsertionMode.Replace。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多