【问题标题】:Redirect to Post Method/Action重定向到发布方法/操作
【发布时间】:2011-03-28 14:44:28
【问题描述】:

我有一个接受 POST 的 ActionResult,但是是否有办法让我从一个控制器重定向到另一个包含此 POST 方法/动作的控制器???

这是我要重定向到的方法的签名;

[ValidateAntiForgeryToken]
 [Transaction]
 [AcceptVerbs(HttpVerbs.Post)]
 public ActionResult Edit(Payment payment, PaymentApplication paymentApplication, string exchangeId, bool manual, int firstPaymentId, int? exchangeEventId, bool addOnly)
{

}

【问题讨论】:

  • 我不明白你为什么要这样做,但我会继续玩 :-) 你所在的方法的签名是什么?你能简单地调用action方法吗?例如。在您当前的操作调用中return MyOtherController.Edit(payment, paymentApplication)

标签: asp.net asp.net-mvc


【解决方案1】:

您不能使用RedirectToAction 调用POST 方法。对于您的特定需求,只需新建控制器并直接从另一个控制器调用该方法,并传递任何参数。

var controller = new YourControllerWithMethodToCall();
controller.Edit(payment, etc...);

【讨论】:

    【解决方案2】:

    是的,你可以简单地做到这一点

           <% using (Html.BeginForm("Edit", "AnotherController", FormMethod.Post, new { id = "formNameHere" }))
               {%>
        //form content here
    
    <input type="submit" Value="Post Me" id="PostMe">
         <%} %>
    

    在 ActionNameParameter 你可以写你的动作,在 ControllerNameParameter 你可以写你要发布数据的控制器名。

    【讨论】:

    • 你在这里显示的是页面后面,这对我不起作用。我在一个控制器中,我想重定向到另一个控制器中的一个动作,它的属性是 POST..我该怎么做???
    • 它会将您重定向到给定控制器的编辑操作。你想从控制器重定向?如果是这样,那么您可以使用 RedirectToAction("ActionName","ControllerName")
    • RedirectToAction 适用于具有 POST 属性的 Action??
    • 因为我在一个控制器内部,并且我试图获取一个属性为 POST 的方法。
    • 也许我没听懂你的意思。您不能将代码编写为任何方法并调用它。为什么要调用 [POST] Action?
    猜你喜欢
    • 1970-01-01
    • 2019-02-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多