JSON RedirecttoAction

时间:2010-07-04 19:28:21

标签: asp.net-mvc json

我试图从一个视图更改表中的值,然后使用Flash FSCommand和Json重定向到另一个视图,使用以下代码:

        if (command == "nameClip") {
            var url = '<%= Url.Action("Index", "Home") %>';
            var clip = [args];
            try {
                $.post(url, { MovieName: clip }, function(data) {
                    ;
                }, 'json');
            }
            finally {
                // window.location.href = "/Demo/SWF";
            }
        }

在控制器中:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(SWF movietoplay)
    {

            var oldmovie = (from c in db.SWFs
                            where c.ID == "1"
                            select c).FirstOrDefault();

            var data = Request.Form["MovieName"].ToString();
            oldmovie.SWFName = data;
            db.SubmitChanges();
            return RedirectToAction("Show");
     }

一切正常,除了Redirect !!

1 个答案:

答案 0 :(得分:2)

您需要在AJAX成功回调中执行重定向:

$.post(url, { MovieName: clip }, function(data) {
    window.location.href = '/home/show';
}, 'json');

由于您使用AJAX调用此操作,因此无法在服务器端执行重定向。

此外,您在AJAX调用中指出您期望从服务器端获取JSON,但是您发送的重定向不一致。您可以修改控制器操作,只需返回客户端需要使用JSON重定向到的URL:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(SWF movietoplay)
{
    ...
    return Json(new { redirectTo = Url.Action("show") });
}

然后:

$.post(url, { MovieName: clip }, function(data) {
    window.location.href = data.redirectTo;
}, 'json');