0

C#RazorでASP.NET MVC3アプリケーションを使用しています。

フィルター(年、月など)を使用してページを作成したいのですが、ユーザーがフィルターを選択して送信ボタンをクリックすると、グラフが表示されます。次のコードを使用します (機能しません): Stats.cshtml を表示します。

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

<h2>@ViewBag.Message</h2>

@{ Html.RenderPartial("StatsFilter", Model.FilterViewModel);  }

<img src="@Url.Action("DrawChart")" alt="Drawing chart with HTML Helper" />

コントローラ

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View("Stats", StatsViewModel);
        }

        [HttpPost]
        public ActionResult Index(FiltersViewModel filters)
        {
            //Retrieve Data
            return View("Stats", StatsViewModel);
        }

        public ActionResult DrawChart(GraphViewModel graph)
        {
            var chart = new Chart(width: 500, height: 600)
                .AddTitle("Chart Title")
                .AddSeries(
                            chartType: "Line",
                            name: "Stats",
                            xValue: chartData.XValues.Keys.ToList(),
                            yValues: chartData.XValues.Values.ToList())
                .GetBytes("png");
            return File(chart, "image/bytes");
        }
    }

ビューモデル

public class StatsViewModel
{
    public FilterViewModel Filters { get; set; }
    public GraphViewModel Graph { get; set; }
}

このような解決策では、ViewModel をグラフに渡す方法がわかりません。さらに、いくつかの小さな調整を行うと (アクション メソッドGraphViewModelからも削除するなどDrawChart)、グラフはデータがなくても表示されます。

ユーザーがフィルターを選択してグラフを表示できるようにしたいと思います。私が正しい道を進んでおり、私のコードが完全に破棄されないことを願っています。

4

1 に答える 1

0

YourGraphViewModel graphはコントローラーのどこにも使用されていません。したがって、このパラメーターは必要ありません。

ただし、いくつかの値をコントローラーに渡す必要がある場合は、URL にクエリ文字列を使用して行うことができます。

于 2012-10-24T16:10:51.300 に答える