ASP .net应用程序中的旧版HTML表单

Bri*_*ian 2 asp.net xhtml

我有一个html页面,我正在转换为asp .net页面.此页面包含一个访问我无法控制的外部网站的表单.下面有一些示例代码:

<asp:Content ID="sample" ContentPlaceHolderID="body" Runat="Server">
<form name="Subscribe" method="post" action="http://anexternalwebsitehere.com/subscribe.asp">
        <input type="text" name="email" size="45" maxlength="120" />
        <input type="submit" name="submit" value="Subscribe" />
    </form>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

表单比我提供的示例更复杂,但它大致了解了我需要转换的内容.这是我遇到的问题.

如果我按原样保留: 当您单击提交按钮时,您将回发到当前页面而不是外部页面

如果简单地将所有内容转换为asp表单控件并更改回发网址: id会变成一些令人费解的"ctl00_body_ctl00",外部页面无法解释.

注意:我确实需要该页面是一个aspx页面,因为我在页面上使用其他内容的母版页.

附加说明:这不是Microsoft MVC.

我错过了什么?

Bri*_*ian 5

问题出在其他人提到的嵌套表格上.

我只需执行以下操作即可解决所有问题:

  1. 删除我添加的额外表单元素.
  2. 将所有控件保留为简单的html控件,但提交按钮除外.
  3. 用asp .net按钮替换提交按钮,并设置回发网址.

旧代码如下:

<asp:Content ID="sample" ContentPlaceHolderID="body" Runat="Server">
<form name="Subscribe" method="post" action="http://anexternalwebsitehere.com/subscribe.asp">
        <input type="text" name="email" size="45" maxlength="120" />
        <input type="submit" name="submit" value="Subscribe" />
    </form>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

新代码:

<asp:Content ID="sample" ContentPlaceHolderID="body" Runat="Server">
        <input type="text" name="email" size="45" maxlength="120" />
        <input type="submit" name="submit" value="Subscribe" />
        <asp:button postbackurl="http://anexternalwebsitehere.com/subscribe.asp" text="Subscribe" runat="server" />
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

这解决了无效嵌套表单的任何问题,因为没有.它还解决了asp .net重命名asp元素的问题,因为重命名的唯一控件是asp按钮控件,这对于提交成功不是必需的.