我真的很固执,正在寻找有关如何实现此目标的替代建议。
我目前在表格中有复选框。该表单无关紧要,因为它保存了当前记录,但意味着我无法创建嵌套表单来提交此数据,这使Ajax成为必需(我可能错了)。
单击复选框后,将显示一个按钮。单击按钮后,它将使用ajax将复选框的值发布到原始视图中的其他控制器。
然后,控制器创建一个深层复杂的viewmodel对象,我需要返回该视图对象,其中包含与先前选中的框相关的数据。
我似乎无法让浏览器重定向并传递所需的数据。原始的ajax请求来自/ Controller1 / Edit,在传递视图模型数据时,我需要将用户重定向到/ Controller2 / Details。
如果有人可以提出建议,我将不胜感激。
很高兴发布代码,但是鉴于我正在寻找替代解决方案,所以也许没有必要。
我保留了ajax,将我的复选框值发布到控制器上
$.ajax({
url: AppSettings.baseUrl + "BOM/getMultiBOM",
type: 'POST',
data: JSON.stringify(dataArr),
}).done(function (result) {
location.href = "/BOM/OpenMultiBOM";
});
在我的控制器中,我将发布的值分配给postModel,然后将它们存储在TempData中。此处的关键是返回一个Json值,该值随后将允许在客户端进行重定向。
public ActionResult getMultiBOM(multiBOMPostModel multiBOMPostModel)
{
TempData["BOMs"] = multiBOMPostModel;
return Json("success");
}
然后我有了另一个HttpGet方法,该页面将在Ajax结果重定向页面并将TempData强制转换为对象之后加载。
[HttpGet]
public ActionResult OpenMultiBOM(int? BomMarkupMessage = null)
{
var bomIds = TempData["BOMs"] as multiBOMPostModel;
}