在 C# 的代码隐藏中创建和发布表单的最佳方法
Posted
技术标签:
【中文标题】在 C# 的代码隐藏中创建和发布表单的最佳方法【英文标题】:Best way to create and post a form in codebehind in C# 【发布时间】:2013-11-22 17:26:08 【问题描述】:我正在使用网络表单,我需要为我的一位客户创建并POST
一个 http form
到支付网关。我正在使用一个显示在母版页中的用户控件,但是他们已经在页面上有一个现有的<form>
,所以我很确定我不能再添加一个。
在 C# 中从后面的代码创建和发布表单的最佳实践方法是什么?目前我有以下内容:
var nvc = new System.Collections.Specialized.NameValueCollection
"EWAY_ACCESSCODE", ewayResponse.AccessCode,
"EWAY_CARDNAME", txtCcName.Text,
"EWAY_CARDNUMBER", txtCcNumber.Text,
"EWAY_CARDEXPIRYMONTH", ddlCcExpMonth.SelectedValue,
"EWAY_CARDEXPIRYYEAR", ddlCcExpYear.SelectedValue,
"EWAY_CARDCVN", txtCcv.Text
;
var client = new WebClient();
client.UploadValues(ewayResponse.FormActionURL, nvc);
这确实有效,但有更好/替代的方法吗?
【问题讨论】:
cooooooooooooooooo,这可能会提供一些见解:***.com/questions/5401501/… 【参考方案1】:除了之前的建议:
为什么(更简单的)Button.PostbackUrl 不起作用?
<asp:Button ID="externalPost" runat="server" PostBackUrl="http://www.somewhere.com/" Text="Post Somewhere" />
另外,假设您指的是支付网关,您正在执行服务器端 POST,这对 PCI 合规性 有影响(与来自客户端/浏览器的直接表单发布相比)。
Hth.
【讨论】:
我同意 PCI 的东西,这就是为什么我想找到更好的解决方案。那么最好的选择是爱尔兰酋长的解决方案吗?还是有更优雅的方式来做到这一点? @AlexFrame 如上所述,Button.PostBackUrl
不起作用的任何原因?它会做的实际上是直接发布到您设置的 url,解决 PCI 问题。我没有尝试过下面的建议,但是快速阅读代码可以让您删除服务器端的<form/>
标签。当然,这也意味着其他一些代码可能会受到影响(例如页面上依赖默认回发行为的其他控件),然后您需要对其进行调整。
它“切换”表单标签,因此不会影响其他控件。我在我开发的五个不同的电子商务网站中使用了它。您可以使用 javascript,前提是它已在所有客户端上启用。唯一的其他解决方案是添加第二对表单标签,这是一个没有人解释的黑客;-)【参考方案2】:
这是我使用的解决方案:
http://jerschneid.blogspot.com/2007/03/hide-form-tag-but-leave-content.html
警告(自己的博文):
http://codersbarn.com/post/2008/03/08/Solution-to-ASPNET-Form-PayPal-Problem.aspx
【讨论】:
以上是关于在 C# 的代码隐藏中创建和发布表单的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中创建和初始化双精度的 SAFEARRAY 以传递给 C#