我需要在C#中将表单发布到第三方网址。必须命名输入字段以匹配第三方期望的内容(在本例中为“电子邮件地址”等)。如果我使用标准的“输入”标签,我没有很好的方法来验证控件。如果我在这个例子中使用“asp:TextBox”,它将重命名我的字段并搞砸我的帖子。救命!
<asp:TextBox id="CustomerEmailInput" runat="server"
name="Email Address"
CssClass="tb5a" >
</asp:TextBox>
<asp:RequiredFieldValidator ID="customerEmailRequired" runat="server"
ControlToValidate="CustomerEmailInput"
display="Dynamic"
ErrorMessage="*">
</asp:RequiredFieldValidator>
<asp:Button runat="server"
PostBackUrl="http://ThirdPartyUrl.com"
Text="Submit" />
所以上面提到了以下内容。我需要将名称设置为“电子邮件地址”,或者我需要一种验证输入字段的好方法(此示例已简化,有更多字段和更多正则表达式验证)。
<div>
<input type="text" name="ctl00$ContentPlaceHolder1$CustomerEmailInput" class="tb5a" id="ctl00_ContentPlaceHolder1_CustomerEmailInput">
<span style="color: Red; display: none;" id="ctl00_ContentPlaceHolder1_customerEmailRequired">*</span>
<input type="submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$ctl00", "", true, "", "http://thirdpartyurl.com", false, false))" value="Submit" name="ctl00$ContentPlaceHolder1$ctl00">
</div>
答案 0 :(得分:2)
首先,尝试将ClientIDMode设置为静态。我知道这将使ID保持静态,但不确定name属性。
您也可以尝试保留输入而不使用asp:TextBox,但无论如何都要将runat =“server”放在上面,看看它是否保留了您的名字。像这样:
<input type="text" name="EmailAddress" id="EmailAddress" runat="server" />
顺便问一下,为什么你的变量名中会有空格?不计算。
答案 1 :(得分:1)
如果您直接从表单发布到第三方而不回发到服务器,那么传统asp.net Web表单中最简单的方法是创建表单,然后将其操作设置为第三方URL明确地使用普通的旧基本HTML和标签来介绍内容。然后,您引入javascript来验证客户端上的字段。
如果您回复到您的服务器,然后发布到第三方,这没有任何问题,因为您可以按照自己喜欢的方式格式化帖子。