请提出呈现Partials的最佳方式
本文关键字:最佳 方式 Partials | 更新日期: 2023-09-27 18:20:51
我有一个新的开发任务,我正在尝试做报告面板,我的要求是我将有一个表格,我需要从表格中选择值,根据用户的选择,我需要在同一页中显示高图表,并在同一页面中显示我的数据的表格视图。所以我的表单内容是静态的,我的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中注入相应的部分。
对于我正在做的:(我的行动方法的延续)
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>
因此,我已经准备好了部分视图和数据,无法在mianforma.aspx中显示相应的部分。请帮助我如何做到这一点?
$.ajax({
url: "/Stats/InterStats/<%: Model.ManufacturerId %>/<%: Model.CountryId %>/<%: Model.StartDate %>/<%: Model.EndDate %>",
type: 'get',
success: function (data) {
<% Html.RenderPartial("InterStats"); %>
}
});
相反,您需要success
函数中的一些javascript来处理响应。可能类似于:
success: function (data) {
$('#someDivId').html(data);
}