在后AJAX调用之后,ASP.NET MVC中的重定向到控制器方法

时间:2015-03-24 17:49:09

标签: ajax asp.net-mvc asp.net-ajax

目前的设置 -

url: configMap.sitePath + "api/Quiz/" + quizResponse.quizId,
                    data: JSON.stringify(quizResponse),
                    success: function (data) {
                       // Display the data on UI 
                    }

上面的帖子是.NET api控制器,它返回quizResponse

    [ValidateModelState, HttpPost]
    public HttpResponseMessage Post(int id, QuizResponse value)

现在根据新的要求,一旦api有响应,我应该重定向到另一个页面(MVC控制器,然后查看)。我如何实现这一目标 -

    public ActionResult ScptResult()
    {
        return View();
    }

我也想过在ajax成功之后重定向,但不确定它是否正确。 另外,如何在发布后将数据传递给scptresult控制器方法?

3 个答案:

答案 0 :(得分:1)

在JQuery的成功函数中,将页面重定向到MVC页面:

window.location = '{controller}/{action}/{quizid}';

假设您使用标准MVC路由,并假设您更改ScptResult函数以接受参数,那么您可以将数据传递给它。

public ActionResult ScptResult(int quizid)
{
    return View();
}

答案 1 :(得分:0)

我应该警告,我对ajax的反应并不是很熟悉,但希望这一点很接近。

API

[ValidateModelState, HttpPost]
public HttpResponseMessage Post(int id, QuizResponse value)
{
    //Other stuff...
    var redirect = string.Format(@"/controller/ScptResult/{0}", id);
    return new HttpResponseMessage()
    {
        Content = new StringContent(redirect)
    };
}

的Javascript

url: configMap.sitePath + "api/Quiz/" + quizResponse.quizId,
                data: JSON.stringify(quizResponse),
                success: function (data) {
                   window.location = data; 
                }

控制器

// This follows the default route. 
// "/{controller}/{action}/{id}" where id is optional.
// window.location = "/ControllerName/ScptResult/OtherData"
public ActionResult ScptResult(string id)
{
    return View();
}

答案 2 :(得分:0)

在成功方法或任何地方完成工作后,在java脚本中使用

window.location = '@Url.Action("ScptResult", "YourControllerName")';