gpt4 book ai didi

javascript - 将复杂对象从 View 发送到 MVC 操作作为无 ajax 调用

转载 作者:行者123 更新时间:2023-11-29 20:35:04 25 4
gpt4 key购买 nike

我正在开发一个 ASP.NET MVC 网络应用程序。有一个带有一堆搜索过滤器的 View ,页面中间还有一个网格,表示搜索结果。

搜索过滤器的最终用户设置值,当单击搜索按钮时,ajax 调用返回将重新绑定(bind) gird 的值。网格中的每一行代表“ItemId”和“version”,可以通过复选框选择。

最后,当用户点击“详细报告”时,我们需要将用户重定向到另一个页面( View )。

我需要将选定的搜索过滤器和网格选定的行值作为这样的数组传递 (ItemIds[] and Versions[]) 到“Detail”行动。

所以,把问题说清楚。我需要将以下值传递给操作:

  1. 搜索过滤器
  2. ItemId 数组
  3. 版本数组

不幸的是,我无法将参数传递给操作。我得到了空

当我使用

查看(Index.cshtml)

 function prepareSelectedInfos() {
var formValues = $('#form').serializeFormToObject();
var gridValues = GetGridSelectedValues();
var dto = {
FormFilters: formValues,
ItemIds : gridValues.ItemIds,
Versions : gridValues.Versions
}
return dto;
}


$('#lnkDetailReport').click(function () {
var gridValues = GetGridSelectedValues();

var url = '/Report/Controller/Detail/';
var dto = prepareSelectedInfos();
window.open(url + dto, '_blank');
});

Controller

  public ActionResult Detail(ModelVersionStatisticalDetailDto data)
{

//create a ViewModel according to the incoming data
var viewModel = ;
return View(viewModel);
}

模型

  public class ModelVersionStatisticalDetailDto
{
public ModelVersionStatisticalReportDto FormFilters { get; set; }
public int [] ItemIds { get; set; }
public string[] Versions { get; set; }
}

我需要在 Detail 操作中为 View 准备值

最佳答案

据我所知,在 ajax 调用中发布复杂对象(使用相同的发布参数)后,无法执行重定向。为了执行您想要的操作,您可以从下面选择一个解决方案。

  1. 在您的Detail 操作中使用查询字符串并执行简单的post 操作而不是ajax 调用
  2. 尝试用Partial View替换Detail Action 的响应
  3. 如果您正在寻找客户端解决方案,您可以从 localStorage 对象(一个棘手的解决方案)中获得帮助。您可以将所需数据存储在 localStorage 对象中,并将 key 传递给 Controller ​​。在目标页面中,使用键来获取存储在存储中的数据。过程结束后不要忘记清除它。 https://blog.logrocket.com/the-complete-guide-to-using-localstorage-in-javascript-apps-ba44edb53a36/

关于javascript - 将复杂对象从 View 发送到 MVC 操作作为无 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56933781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com