猿问

使用 Json 的 MVC 重定向操作

目的:编写的代码假设使用Json保存所有内容并重新执行操作。


问题:当前使用 Json 的重定向不允许重定向。return new 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" });

}


慕娘9325324
浏览 181回答 1
1回答

慕少森

您在这里有几个选择,您可以根据自己的要求决定更喜欢哪一个。不要使用 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);}
随时随地看视频慕课网APP
我要回答