我有一个新的开发任务,我正在尝试做报告仪表板,我的要求是我将有一个表单,我需要从表单中选择值,并且根据用户选择,我需要在同一页面和表格视图中显示高图表我的数据在同一页面中。所以我的表单内容是静态的,我的 Highcharts 数据和表格包含动态数据。
到目前为止我已经完成的步骤:
登录表单以及凭据是否有效显示我的 mainform.aspx 我的 mainform.aspx 包含提交按钮的表单
<form id="StatsForm" name="StatsForm" action="../Stats/Index/" method="POST" enctype="multipart/form-data"> <%= Html.AntiForgeryToken()%> <% Html.RenderPartial("OptionalFields"); %> </form>
单击按钮时,我将表单数据发送到控制器//
$(document).ready(function () { $("#GetReport").click(function () { $("form[name=StatsForm]").submit(); }); }); //]]> </script>
我正在我的控制器操作中从我的表单数据中执行一些存储库功能,并且我正在将表单值添加到模型类中。
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Index(FormCollection form) { var manufacturerId = Convert.ToInt32(form["manufacturerId"]); var reportId = Convert.ToInt32(form["reportId"]); var categoryId = Convert.ToInt32(form["categoryId"]); var retailerId = Convert.ToInt32(form["retailerId"]); var countryId = Convert.ToInt32(form["countryId"]); var regionId = Convert.ToInt32(form["regionId"]); var manufacturerWidgetId = (form["ManufacturerWidgetId"]); var startDate = new DateTime(1, 1, 1, 0, 0, 0, 0); var endDate = new DateTime(1, 1, 1, 0, 0, 0, 0); if (!String.IsNullOrEmpty(form["StartDate"])) { startDate = Convert.ToDateTime(form["StartDate"]); } if (!String.IsNullOrEmpty(form["EndDate"])) { endDate = Convert.ToDateTime(form["EndDate"]); } var reportName = _reportRepository.GetReport(reportId); var stats = new Stats { ManufacturerId = manufacturerId, CountryId = countryId, ReportName = reportName.ToString(), StartDate = startDate, EndDate = endDate };
现在我很震惊,我做了以下步骤,不确定我是否正确。我认为因为我的 mainform.aspx 必须显示动态部分,所以我正在尝试为每个报告创建部分,并且在选择用户值时,我计划在我的 mainform.aspx 中注入相应的部分。
为此我正在做:(我的 Action 方法的继续)
switch (reportName.Code) { case "INTER": return RedirectToAction("InterStats", new { manufacturerId = manufacturerId, countryId = countryId, startDate = "2013-01-01", endDate = "2013-01-31" }); break; case "CUMLEADS": return RedirectToAction("ParametersCumLeads", new { manufacturerId = manufacturerId, countryId = countryId, categoryId = categoryId, startDate = startDate.ToString("yyyy-MM-dd"), endDate = endDate.ToString("yyyy-MM-dd") }); break; case "IMP": break; }
5.我的部分看法:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public JsonResult InterStats(int manufacturerId, int countryId, DateTime startDate, DateTime endDate)
{
//Get all manufacturerwidgets for manufacturer
var manufacturerWidget = _manufacturerWidgetsRepository.GetManufacturerWidgetByManufacturerAndCountry(manufacturerId, countryId);
var interReport = new InterReport();
var interRecordList = new List<InterRecord>(); // a list of my anonymous type without the relationships
interReport.InterRecordList = new List<InterRecord>();
var count = 1;
foreach (var mw in manufacturerWidget)
{
var widgetName = mw.Description;
//Get the product stats data
var imps = _productStatsRepository.GetSumImpressionsProductStatsForManufacturerCountryDate(
mw.Id, countryId, startDate, endDate);
var clicks = _productStatsRepository.GetSumClicksProductStatsForManufacturerCountryDate(
mw.Id, countryId, startDate, endDate);
float ctr = 0;
if (imps != 0 && clicks != 0)
{
ctr = ((clicks / (float)imps) * 100);
}
// Create the data for the report
var interRecord = new InterRecord
{
WidgetName = widgetName,
Impressions = imps,
Interactions = clicks,
Ctr = ctr,
Count = count
};
interReport.InterRecordList.Add(interRecord);
count++;
}
interReport.Counter = count;
return Json(interReport, JsonRequestBehavior.AllowGet);
}
我尝试在我的 mainform.aspx 中编写一个小的 ajax 函数来呈现部分数据,但是 $("#GetReport").click(function () 我将表单发送回控制器不知道它会如何再次在这里?
<script type="text/javascript" language="javascript"> //<![CDATA[ $(document).ready(function () { $("#GetReport").click(function () { $.ajax({ url: "/Stats/InterStats/<%: Model.ManufacturerId %>/<%: Model.CountryId %>/<%: Model.StartDate %>/<%: Model.EndDate %>", type: 'get', success: function (data) { <% Html.RenderPartial("InterStats"); %> } }); $("form[name=StatsForm]").submit(); }); }); //]]> </script>
所以我有我的部分视图,我的数据准备好了,我无法在我的 mianform.aspx 中显示相应的部分。请帮助我该怎么做?