我试图从一个视图更改表中的值,然后使用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 !!
答案 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');