У меня есть сетка, которая отображает список проектов.У каждой строки есть флажок с идентификатором каждого проекта.Я пытаюсь передать массив значений каждого выбранного флажка в мой контроллер, получить список данных этих проектов, а затем в ответ передать эти данные в представление, которое отображает список всех этих данных проекта.Он возвращается к ответу, но я не могу понять, как заставить модель, привязанную к представлению дисплея, принять ответ.
Вот что у меня есть:
Вызов jQuery:
$("#PrintProjectFormId").submit(function (event) {
var selectedProjects = [];
selectedProjects = projectsGrid.$('input[type="checkbox"]').serializeArray();
var projects = [];
$(selectedProjects).each(function (i, field) {
projects.push(field.value);
});
var action = $("#PrintProjectFormId").attr("action");
$.ajax({
type: "POST",
url: action,
data: {
projectId: projects
},
success: function (result) {
$("#printProjectModal").modal('hide');
//wait for modal to close before redirect
$("#printProjectModal").on("hidden.bs.modal", function () {
window.location = result.Url + "/" + result.responseData;
});
},
error: function (jqXHR, textStatus, errorThrown) {
alert("There was a problem submitting this project to print.");
}
});
});
Действие контроллера:
[HttpPost]
public JsonResult GetPrintableProject(Guid[] projectId)
{
var message = "";
var vmOneSheet = _projectService.MassExport(projectId);
message = "Projectsreturned";
UrlHelper(Request.RequestContext).Action("ProjectExport", "Project");
return Json(new { Url = redirectUrl, response = message, responseData = vmOneSheet });
}
, которое вызывает:
public ActionResult ProjectPDFExport(IEnumerable<ProjectExportVM> vmOneSheet)
{
return View("ProjectPDFExport", vmOneSheet);
}
и представление дисплея:
@using Web.ViewModels
@model IEnumerable<ProjectExportVM>
@foreach (var item in Model)
{
//displays each project
Данные ответа представляют собой бесчисленный список моделей представления, по одному для каждого проекта, выбранного в исходной сетке.
У меня все работает нормальнопока это просто ActionResult, но мы пытаемся сделать это вызовом AJAX.Думаю, я делаю это сложнее, чем нужно.