我试图将带有 AJAX 的 JSON 对象从索引视图发送到控制器,而不是从控制器发送到方法 New,然后重定向到新视图。我的 JS 代码来自索引视图:function startStrip(id, name, s_date, num, id_type, price){ if (num == "") { num = 0; } else { num = parseInt(num); } var item = { itemId: parseInt(id), name: name, startDate: s_date.split(' ')[0], startTime: s_date.split(' ')[1], itemNum: num, IDItemType: parseInt(id_type), price:price } console.log(item); $.ajax({ type: 'POST', url: '@Url.Action("New","Congress")', data: JSON.stringify(item), contentType: 'application/json; charset=utf-8', success: function (response) { console.log("sucess= "+response); }, error: function (err) { console.log("error= "+err); } }); }控制器: [HttpPost] public ActionResult New(NewCongressViewModel viewModel) { Console.WriteLine(viewModel); return View(viewModel); }问题是控制器返回一个 HTML 代码并且没有带我到指定的视图
1 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
您可以使用TempData将模型数据传递给重定向请求。您可以传递字符串、int、Guid 等简单类型。如果您想通过 TempData 传递复杂类型的对象,您可以将对象序列化为字符串并传递它。具体到您的情况,您可以使用:
[HttpPost]
public ActionResult New(NewCongressViewModel viewModel)
{
var complexObj = JsonConvert.SerializeObject(viewModel);
TempData["mymodel"] = complexObj;
return RedirectToAction("New");
}
public ActionResult New()
{
if (TempData["mymodel"] is string complexObj )
{
var getModel= JsonConvert.DeserializeObject<NewCongressViewModel>(complexObj); //Your model values can now be accessed
}
return View();
}
注意: 的值TempData仅从一个请求持续到下一个请求。
添加回答
举报
0/150
提交
取消