如何从MVC将数据发布到Action URL

时间:2015-09-16 10:00:24

标签: c# asp.net-mvc asp.net-mvc-4

我是MVC的新手 实际上,我在ASP.Net中有一个场景,我submitting data(其中包含Amount,RedirectURL等)到URL(支付网关),如下所示:

<form id="form1" runat="server" method="post" action="https://test2pay.ghl.com/IPGSG/Payment.aspx">
        <div>
            <%=eGHLPurchaseItems%>
            <input type="submit" value="Pay Now" />
        </div>
    </form>  

它将redirect to that payment gateway page,成功完成交易后,我将redirected back to my application页面上显示一些extra status codes

我按HttpContext.Current.Request["TransactionType"];

处理这些退货状态值

现在,我需要在MVC中这样做,但我唯一的困惑是如何提交表单。

我在MVC中尝试使用:

@using (@Html.BeginForm("https://test2pay.ghl.com/IPGSG/Payment.aspx", null, FormMethod.Post)){
      <button type="submit" class="btn btn-lg b-primary">Proceed to Payment</button>
        }

但是,我被重定向到此网址:

http://localhost:62414/Billing/https%3a/test2pay.ghl.com/IPGSG/Payment.aspx

任何人都可以帮助我如何使用MVC中的某些数据提交表单吗?

3 个答案:

答案 0 :(得分:2)

为标签创建html或使用

您的控制器就像

ViewBag.CustId = "101";
ViewBag.Email = "cust@sss.sss";

并查看

 @Html.BeginForm(null, null, FormMethod.Post, new {@action="https://test2pay.ghl.com/IPGSG/Payment.aspx"})
      {
         @Html.Hidden("id", @ViewBag.CustId);
         @Html.Hidden("email", @ViewBag.Email);
          <button type="submit" class="btn btn-lg b-primary">Proceed to Payment</button>
      }

由于您尝试重定向到外部网址,请将ActionController设置为空。

答案 1 :(得分:0)

你也可以做一个ajax帖子,它比将表单发布到远程URL有一些优势。最重要的是,它使您有机会优雅地处理帖子可能发生的任何错误。

<form action="https://test2pay.ghl.com/IPGSG/Payment.aspx" name="frmPost">

</form>

$("form").submit(function() {
    $.post($(this).attr("action"), $(this).serialize(), function(data) {
        // here's where you check the response you got back from the post
        if (!data.IsOK)
        {
            // the post didn't succeed... handle error here or something
        }
        else
        {
            // the post succeeded so redirect back to this page
            window.location.href = '@Url.Content("~/")`;
        }
    });
});

然而,在实施此功能之前,您需要考虑一些事项。

  1. 您发布的网址是否接受序列化的JSON数据?
  2. 它返回什么数据让您知道帖子发生了什么?
  3. 我首先考虑的是你无法帮助你,但是对于第二个问题,我强烈建议使用Fiddler Web Debugger来检查帖子的结果。

    HTH

答案 2 :(得分:0)

在你的模特中:

public string eGHLPurchaseItems { get; set; }

无论你做什么来设置eGHLPurchaseItems ......

在您的视图中

   @using(Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm" , @action="https://test2pay.ghl.com/IPGSG/Payment.aspx"}))
          {
             @Html.HiddenFor(model => model.eGHLPurchaseItems)
              <button type="submit" class="btn btn-lg b-primary">Proceed to Payment</button>
          }

<script type="text/javascript">
    $(document).ready(function () {
        $("#myForm").submit();
    });
</script>