c# - 使用 Json 的 MVC 重定向操作
问题描述
目的:编写的代码假设使用 Json 保存所有内容并重新执行操作。
问题:当前使用 Json 的重定向不允许重定向。返回新的 JsonResult { Data = new { status = status } };
代码如下供参考: 寻找建议:
查看代码
$.ajax({
url: '/SA/Save',
type: "POST",
data: JSON.stringify(data),
dataType: "JSON",
contentType: "application/json",
success: function (d) {
//check is successfully save to database
if (d.status == true) {
//will send status from server side
alert('Successfully done.');
window.location.href = d.Url;
//clear form
t = [];
d = [];
r = [];
$('#SN').val('');
$('#SA').val('');
$('#t').empty();
$('#d').empty();
$('#r').empty();
}
else {
alert('Failed');
}
$('#submit').val('Save');
},
});
控制器
public JsonResult Save(SAVM O,)
{
bool status = false;
var userId = User.Identity.GetUserId();
if (ModelState.IsValid)
{
SA s = new SA
{
}
_db.SA.Add(O)
_db.SaveChanges();
status = true;
}
else
{
status = false
}
return new JsonResult { Data = new { status = status } };
}
这里想像这样重定向:
return RedirectToAction("F", "SA");
但使用 JsonResult
解决方案
看法
$.ajax({
url: '/SA/Save',
type: "POST",
data: JSON.stringify(data),
dataType: "JSON",
contentType: "application/json",
success: function (d) {
window.location.href = d.Url;
})
} });
控制器
public JsonResult Save(SAVM O,)
{
var userId = User.Identity.GetUserId();
if (ModelState.IsValid)
{
SA s = new SA
{
}
_db.SA.Add(O)
_db.SaveChanges();
return Json(new { Url = "F/SA" });
}
解决方案
您在这里有几个选项,您可以根据自己的要求决定您喜欢哪一个。
不要使用 AJAX。AJAX 请求适用于当前页面所需的数据。您应该使用同步请求进行重定向。
返回客户端应在
success
事件上重定向到的 URL:return Json(new { url = "/F/SA" });
接着:
success: function (d) { window.location.url = d.url; }
返回已经渲染的 View 并将其加载到当前页面:
return View("some view...");
接着:
success: function (d) { $("#someElement").html(d); }