如何从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中使用一些数据提交表单?
为标签创建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,将Action
和Controller
设置为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("~/")`;
}
});
});
然而,在实现这一点之前,您需要考虑一些事情。- 你发布的URL是否接受序列化的JSON数据?
- 它返回什么数据让你知道你的帖子发生了什么?
对于第一个考虑,我不能帮助你,但是对于第二个考虑,我强烈建议使用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>