Comment corriger l'Enfant, les actions ne sont pas autorisés à effectuer la redirection des actions, d'autres réponses ne permet pas de résoudre

ASP.NET MVC2 vue:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcMusicStore.ViewModels.PaymentViewModel>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    ...
    <form action="<%= Html.Action("PaymentByBankTransfer", "Checkout") %>" >
    <input type="submit" value="Payment by bank transfer" />
    </form>

CheckoutController:

    public ActionResult PaymentByBankTransfer()
    {
        var order = Session["Order"] as Order;
        ExecCommand(@"update dok set confirmed=true where order={0}", order.OrderId);
        return CheckoutCompleteOK();

        var cart = ShoppingCart.GetCart(HttpContext);
        cart.EmptyCart();
        //https://stackoverflow.com/questions/1538523/how-to-get-an-asp-net-mvc-ajax-response-to-redirect-to-new-page-instead-of-inser?lq=1
        return JavaScript("window.location = '/Checkout/CompleteOK'");
    }

    //common method called from other controller methods also
    public ActionResult CheckoutCompleteOK()
    {
        var cart = ShoppingCart.GetCart(HttpContext);
        cart.EmptyCart();
        //prevent duplicate submit if user presses F5
        return RedirectToAction("Complete");
    }

   public ActionResult Complete()
    {
        var order = Session["Order"] as Order;
        SendConfirmation(order);
        return View("PaymentComplete", order);
     }

formulaire en appuyant sur le bouton soumettre exception provoque

Child actions are not allowed to perform redirect actions

Comme le montre le code plus upvoted réponse de

Comment obtenir un ASP.NET MVC, Ajax réponse de redirection vers la nouvelle page au lieu de l'insertion de vue en UpdateTargetId?

est tenté de régler le problème, mais cela provoque une autre erreur: le navigateur tente d'ouvrir l'url window.location = '/Checkout/CompleteOK'

Comment fixer cette exception? Tout semble OK, il n'y a pas de vues partielles comme décrit dans d'autres réponses.
J'ai essayé de la sla o utilisation de method='post' attribut dans la forme mais le problème persiste.

  • Il n'est pas lié à votre question, mais savez-vous que dans votre PaymentByBankTransfer action le code après le premier retour n'est pas accessible?
  • oui. Code après le premier retour montre un autre infructueuse tentative de résoudre le problème à l'aide du code d'autres, référencé réponse. Il est préférable d'éviter cette javascipt injection, premier retour devrait fonctionner. Je lui ai demandé pourquoi retourner d'abord les causes de cette stange erreur, probablement dans RedirectToAction appel de la méthode
  • Avez-vous essayé return RedirectToAction("Complete"); directement à partir de PaymentByBankTransfer() ? Avez-vous la même erreur ou pensez-vous obtenir le comportement souhaité ?
  • J'ai essayé, mais quand même eu Child actions are not allowed to perform redirect actions. exception.
  • Ils "complet", et effectue un PartialView ou une Vue de l'esprit?
  • Il rend la Vue. J'ai mis à jour la question et ajouté Complète le code de la méthode.
  • J'ai eu ce problème et, après de nombreuses recherche et tente j'ai trouvé le problème est lié méthode de contrôleur (appel à l'action même que PaymentByBankTransfer ici). Elle avait eu une erreur, mais ils ne sont pas jetés bon d'exception et je viens de la fameuse erreur "Enfant actions ne sont pas autorisées à effectuer une redirection actions", Donc après la poignée et de réparer le problème d'erreur à disparu.

InformationsquelleAutor Andrus | 2012-12-15