代码之家  ›  专栏  ›  技术社区  ›  Rosstified

在ASP.NET中使用嵌入式标准HTML表单

  •  10
  • Rosstified  · 技术社区  · 15 年前

    下面是表单关系的模型。注意:在实际部署中,表单将是母版页布局的内容区域的一部分,因此表单需要独立于母版页表单提交。

        <html xmlns="http://www.w3.org/1999/xhtml" >
           <head runat="server">
              <title>Untitled Page</title>
           </head>
           <body>
               <form id="form1" runat="server">
               <div>
                   <form id="subscribe_form" method="post" action="https://someothersite.com" name="em_subscribe_form" > 
                        <input type="text" id="field1" name="field1" />
                        <input id="submitsubform" type="submit" value="Submit" />
                   </form>
               </div>
               </form>
           </body>
       </html>
    
    7 回复  |  直到 15 年前
        1
  •  10
  •   brendan    15 年前

    here ,根据您的需要进行修改。不是100%确定这是否对你有效,但我认为你必须这样做。

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
    
    function postdata()
    {
       var fieldValue = document.getElementById("field1").value;
       postwith("http://someothersite.com",{field1:fieldValue});
    }
    
    function postwith (to,p) {
      var myForm = document.createElement("form");
      myForm.method="post" ;
      myForm.action = to ;
      for (var k in p) {
        var myInput = document.createElement("input") ;
        myInput.setAttribute("name", k) ;
        myInput.setAttribute("value", p[k]);
        myForm.appendChild(myInput) ;
      }
      document.body.appendChild(myForm) ;
      myForm.submit() ;
      document.body.removeChild(myForm) ;
    }
    
    </script>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
               <div>
                    <input type="text" id="field1" name="field1" />
                    <asp:Button ID="btnSubmitSubscribe" runat="server" Text="Submit" OnClientClick="postdata(); return false;" />
    
           </div>
    
    </div>
    </form>
    </body>
    </html>
    

    private void OnSubscribeClick(object sender, System.EventArgs e)
    {
    string field1 = Field1.Text;
    
    
    ASCIIEncoding encoding=new ASCIIEncoding();
    string postData="field1="+field1 ;
    byte[]  data = encoding.GetBytes(postData);
    
    // Prepare web request...
    HttpWebRequest myRequest =
      (HttpWebRequest)WebRequest.Create("http://someotherwebsite/");
    myRequest.Method = "POST";
    myRequest.ContentType="application/x-www-form-urlencoded";
    myRequest.ContentLength = data.Length;
    Stream newStream=myRequest.GetRequestStream();
    // Send the data.
    newStream.Write(data,0,data.Length);
    newStream.Close();
    }
    
        2
  •  7
  •   Appetere Web Solutions    14 年前

    如果向表单添加ASP.NET按钮,并将其PostBackUrl属性设置为外部站点,则所有表单数据都将发布到该URL。

        3
  •  6
  •   Lundin    11 年前

    </form> 在你的面前贴上标签 <form> 关闭导致问题的asp.net窗体。别忘了添加一个 < 标记在html表单之后。这可能会导致编辑器给您一个异常,但别担心,它会起作用的。

        4
  •  3
  •   cowgod    15 年前

    嵌套表单在HTML中是不可能的 according to the W3C with jQuery 正如彼得在一个名为“我的想法”的博客上所解释的那样。

        5
  •  1
  •   Michael Earls    13 年前

    根据我的经验,Appetere Web Solutions拥有最好的解决方案。简单而优雅…而且它不是一个黑客。使用PostBackUrl。

        6
  •  0
  •   Doug    15 年前

    我和罗斯的情况一样,只是我的输入类型都是“隐藏”变量。

    Cowgod的回答让我想到了.aspx页面中的嵌套表单。最后,我将我的第二个表单从main.aspx表单()中“取消嵌套”,并将它(连同我的js脚本标记)放在body标记的正下方,但在main.aspx表单标记的前面。

    突然间,一切都如预期的那样屈服了。这是黑客吗?

        7
  •  -1
  •   goldenratio max    15 年前

    runat=server . 然而,我认为你根本不能嵌套表单。

    您可能需要创建一个新的母版页,该母版页上没有表单标记,因此表单只能在该页上工作。这不是一个好的解决方案,除非您可以将表单放在母版页表单之外,并使用javascript提交第二个表单,但这几乎不是更好的解决方案。对于你想要达到的目标,真的没有好的解决方案,如果是这样,我想听听。我不认为你能从一个暗箱操作人员那里打电话,对吗?我肯定有办法。但这可能是唯一的解决方案:从代码开始。

    推荐文章