点击按钮,它从.ascx开始。
<script type="text/javascript">
function acceptG(id) {
jQuery.get('<%: Url.Action("Accept", "Gift") %>', { id: id });
}
</script>
然后,这里的Controller是RedirectToAction所在的位置:
[Authorize]
public ActionResult Accept(long id)
{
var result = _gtService.AcceptG(id, User.UserID);
if (result.Success)
return RedirectToAction("Index", "Magnets");
else
return View("InvalidG");
}
这是索引
public ActionResult Index()
{
ViewData["Count"] = _souvenirService.GetDataForUser(User.UserID).Count();
return View();
}
要记住的一件事是当使用菜单并点击此索引时,页面会成功显示,因此它确实有效。但是当使用RedirectToAction时,它会命中所有代码,但不会重定向。任何帮助表示赞赏。
答案 0 :(得分:3)
Jquery不是魔法,它只是javascript的包装器。当您在服务器上执行重定向时,并不意味着您的浏览器(ajax-request)将自动理解您的意思。您必须告诉浏览器我们要重定向。我已根据您的需求创建了非常小的系统,但您可以根据应用程序要求创建复杂的系统。
<script type="text/javascript">
function acceptG(id) {
jQuery.ajax({
url:'<%: Url.Action("Accept", "Gift") %>',
data:{ id: id },
success:function(data)
{
if(data=='Redirect')
{
window.location='<%: Url.Action("Index", "Magnets") %>';
}
else
{
//do something else
}
}
});
}
</script>
[Authorize]
public ActionResult Accept(long id)
{
var result = _gtService.AcceptG(id, User.UserID);
if (result.Success)
if(Request.IsAjaxRequest())
{
return Content('Redirect')
}
return RedirectToAction("Index", "Magnets");
else
return View("InvalidG");
}