我正在使用datatables插件来选择行。使用JQuery,我可以提取选定的行。然后,我将一组ID(行)发布到MVC控制器操作中,但是此操作应返回一个包含模型对象的View,该对象包含先前的行,我需要重定向到该View。
我发现Post / Redirect / Get模式几乎符合我的需求,那里的重定向用于将用户重定向到确认页面。但是此模式假定行是在Post阶段插入到数据库中,而不是在Get阶段检索到。有没有一种方法可以在不存储行的情况下做到精确?
我尝试对MVC Action使用JQuery / AJax发布请求。然后,该操作从已发布的行创建发票对象,然后应返回类似于以下内容的信息:
return View(inv);
我最终改为使用下一行,该行包含“查看”页面及其模型对象的url,但是我不知道如何使用JQuery重定向到具有该模型的页面:
return Json(new { Url = "Invoices/Create", invoice = inv });
因此,我需要从JQuery / Ajax发布请求重定向到返回的View(模型对象)。
我的Ajax请求。数据包含url和发票模型,但是我只能重定向到url,并且不知道如何传递发票模型:
$.ajax({
type: "POST",
url: "/Invoices/CreateGet",
data: postData,
success: function (data) {
alert("success");
window.location.href = data.url;
},
dataType: "json",
traditional: true
});
为明确起见,剃须刀页面应采用发票模型,然后生成页面:
@model WebMvc.Models.Invoice
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>Invoice</h4>
<div> ... </div>
更新
好吧,我放弃了这个废话,坚持使用GET请求,该请求在URL中传递ID数组。我想我做错了事。
答案 0 :(得分:-1)
您可以使用TempData:
TempData["invoice"] = inv ;
return RedirectToAction("Invoices", "Create");
在“创建”操作中:
public ActionResult Create() {
...
var inv = TempData["invoice"];
...
}
答案 1 :(得分:-1)
您可以使用TempData:
TempData["invoice"] = inv ;
return RedirectToAction("Invoices", "Create");
在“创建”操作中:
public ActionResult Create() {
...
var inv = TempData["invoice"];
...
}