智慧大石
2021-09-17 20:56:23
我試圖將帶有 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
提交
取消