C# ASP.NET-在内容页中使用SagePay表单方法

C# ASP.NET-在内容页中使用SagePay表单方法,c#,asp.net,forms,post,opayo,C#,Asp.net,Forms,Post,Opayo,我有一个ASP.NET网站,需要将一些隐藏的表单字段发布到SagePay,以便我的客户可以为商品付款。我使用以下方法进行此操作: <input type="hidden" name="VPSProtocol" value="2.23" /> <input type="hidden" name="Currency" value="gbp" /> <input type="hidden" name="TxType" value="PAYMENT" /> <i

我有一个ASP.NET网站,需要将一些隐藏的表单字段发布到SagePay,以便我的客户可以为商品付款。我使用以下方法进行此操作:

<input type="hidden" name="VPSProtocol" value="2.23" />
<input type="hidden" name="Currency" value="gbp" />
<input type="hidden" name="TxType" value="PAYMENT" />
<input type="hidden" name="Vendor" value="myvendorname" />
<input type="hidden" runat="server" id="crypt" name="Crypt" value="@<encrypted string>" />

<asp:Button ID="Button1" runat="server" Text="Pay Now" PostBackUrl="https://live.sagepay.com/gateway/service/vspform-register.vsp"/>

现在,如果我在标准ASP.NET表单中使用此代码,则效果良好-SagePay接受发布的信息并继续付款过程。但是,如果我在带有母版页的内容页中使用相同的代码,Sagepay将显示以下错误屏幕:

5030:我们无法处理您的邮件,请检查您的邮件 集成设置或联系支持团队

隐藏字段似乎因为母版页而失去了价值


有谁能告诉我这里会发生什么,我能做些什么来纠正这种情况。我需要使用SagePay表单方法,我需要使用母版页。

我已经有一段时间没有使用webforms了,但默认情况下,它会根据元素的容器更改元素的名称,以允许导航和标识服务器端:


这意味着您发布的值不是您期望的名称。

我已经有一段时间没有使用webforms了,但在默认情况下,它会根据元素的容器更改元素的名称,以允许在服务器端进行导航和标识:-如果您在表单上查看源代码,是否会发生这种情况?您好@Carl。非常非常感谢。你完全正确!我使用Fiddler查看传递的内容,发现“crypt”字段名被重命名为“CT”类型前缀。如果你想加上这个作为答案,我会相应地标记。嗨,约翰,很高兴能帮上忙。我已经回答了我的评论。感谢您解决了这个问题,我只是删除了'Crypt'字段的runat='server'属性,然后从代码中的属性集中提取了所需的值。这里可以看到一个例子