如何从MVC发布数据到Action URL

本文关键字:数据 Action URL MVC 布数据 | 更新日期: 2023-09-27 18:13:02

我是MVC新手。
实际上,我在ASP中有一个场景。我是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>
        }
但是,我被重定向到这个URL:
http://localhost:62414/Billing/https%3a/test2pay.ghl.com/IPGSG/Payment.aspx

谁能帮我,我怎么能在MVC中使用一些数据提交表单?

如何从MVC发布数据到Action URL

为标签创建html或使用

你的控制器像

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

和View

 @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>
      }

由于您试图重定向到外部url,将ActionController设置为null

您也可以使用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. 你发布的URL是否接受序列化的JSON数据?
  2. 它返回什么数据让你知道你的帖子发生了什么?

对于第一个考虑,我不能帮助你,但是对于第二个考虑,我强烈建议使用Fiddler Web Debugger来检查post的结果。

HTH

在你的模型中:

public string eGHLPurchaseItems { get; set; }

设置eGHLPurchaseItems…

In your View

   @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>