C# 使用Json的MVC重定向操作

C# 使用Json的MVC重定向操作,c#,json,ajax,asp.net-mvc,C#,Json,Ajax,Asp.net Mvc,目的:编写的代码假定使用Json保存所有内容并重新定向到操作 问题: 当前使用Json的重定向不允许按假设进行重定向。 返回新的JsonResult{Data=new{status=status} 以下代码仅供参考:寻求建议: 视图代码 $.ajax({ url: '/SA/Save', type: "POST", data: JSON.stringify(data), dataType: "JSON", contentType: "applicatio

目的:编写的代码假定使用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 }  };
}
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" });
这里要像这样重定向:

return RedirectToAction("F", "SA"); 
但是使用JsonResult

解决方案

看法

控制器

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 }  };
}
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;
    }
    
    success: function (d)
    {
        $("#someElement").html(d);
    }
    
  • 返回已呈现的视图并将其加载到当前页面:

    return View("some view...");
    
    然后:

    success: function (d)
    {
        window.location.url = d.url;
    }
    
    success: function (d)
    {
        $("#someElement").html(d);
    }
    

  • ajax的全部目的是保持在同一页面上。如果您想重定向,不要使用ajax。是的,这是可以理解的,但是如果使用JsonResult,那么是否有任何关于重定向的建议或解决方法