【问题标题】:Best way to create and post a form in codebehind in C#在 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);

这确实有效,但有更好/替代的方法吗?

【问题讨论】:

标签: c# asp.net http-post code-behind


【解决方案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 问题。我没有尝试过下面的建议,但是快速阅读代码可以让您删除服务器端的&lt;form/&gt; 标签。当然,这也意味着其他一些代码可能会受到影响(例如页面上依赖默认回发行为的其他控件),然后您需要对其进行调整。
  • 它“切换”表单标签,因此不会影响其他控件。我在我开发的五个不同的电子商务网站中使用了它。您可以使用 JavaScript,前提是它已在所有客户端上启用。唯一的其他解决方案是添加第二对表单标签,这是一个没有人解释的黑客;-)
【解决方案2】:
猜你喜欢
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多